﻿mini = {
    components: {},
    uids: {},
    ux: {},
    isReady: false,
    byClass: function (_, $) {
        if (typeof $ == "string")
            $ = X4g($);
        return jQuery("." + _, $)[0]
    },
    getComponents: function () {
        var _ = [];
        for (var A in mini.components) {
            var $ = mini.components[A];
            _.push($)
        }
        return _
    },
    get: function (_) {
        if (!_)
            return null;
        if (mini.isControl(_))
            return _;
        if (typeof _ == "string")
            if (_.charAt(0) == "#")
                _ = _.substr(1);
    if (typeof _ == "string")
        return mini.components[_];
    else {
        var $ = mini.uids[_.uid];
        if ($ && $.el == _)
            return $
    }
    return null
},
getbyUID: function ($) {
    return mini.uids[$]
},
findControls: function (E, B) {
    if (!E)
        return [];
    B = B || mini;
    var $ = [],
		D = mini.uids;
    for (var A in D) {
        var _ = D[A],
			C = E[R05g](B, _);
        if (C === true || C === 1) {
            $.push(_);
            if (C === 1)
                break
        }
    }
    return $
},
emptyFn: function () { },
createNameControls: function (A, F) {
    if (!A || !A.el)
        return;
    if (!F)
        F = "_";
    var C = A.el,
		$ = mini.findControls(function ($) {
		    if (!$.el || !$.name)
		        return false;
		    if (Uqe(C, $.el))
		        return true;
		    return false
		});
    for (var _ = 0, D = $.length; _ < D; _++) {
        var B = $[_],
			E = F + B.name;
        if (F === true)
            E = B.name[0].toUpperCase() + B.name.substring(1, B.name.length);
        A[E] = B
    }
},
getbyName: function (C, _) {
    var B = mini.isControl(_),
		A = _;
    if (_ && B)
        _ = _.el;
    _ = X4g(_);
    _ = _ || document.body;
    var $ = this.findControls(function ($) {
        if (!$.el)
            return false;
        if ($.name == C && Uqe(_, $.el))
            return 1;
        return false
    }, this);
    if (B && $.length == 0 && A && A.getbyName)
        return A.getbyName(C);
    return $[0]
},
getParams: function (C) {
    if (!C)
        C = location.href;
    C = C.split("?")[1];
    var B = {};
    if (C) {
        var A = C.split("&");
        for (var _ = 0, D = A.length; _ < D; _++) {
            var $ = A[_].split("=");
            B[$[0]] = decodeURIComponent($[1])
        }
    }
    return B
},
reg: function ($) {
    this.components[$.id] = $;
    this.uids[$.uid] = $
},
unreg: function ($) {
    delete mini.components[$.id];
    delete mini.uids[$.uid]
},
classes: {},
uiClasses: {},
getClass: function ($) {
    if (!$)
        return null;
    return this.classes[$.toLowerCase()]
},
getClassByUICls: function ($) {
    return this.uiClasses[$.toLowerCase()]
},
idPre: "mini-",
idIndex: 1,
newId: function ($) {
    return ($ || this.idPre) + this.idIndex++
},
copyTo: function ($, A) {
    if ($ && A)
        for (var _ in A)
            $[_] = A[_];
return $
},
copyIf: function ($, A) {
    if ($ && A)
        for (var _ in A)
            if (mini.isNull($[_]))
                $[_] = A[_];
return $
},
createDelegate: function (_, $) {
    if (!_)
        return function () { };
    return function () {
        return _.apply($, arguments)
    }
},
isControl: function ($) {
    return !!($ && $.isControl)
},
isElement: function ($) {
    return $ && $.appendChild
},
isDate: function ($) {
    return $ && $.getFullYear
},
isArray: function ($) {
    return $ && !!$.unshift
},
isNull: function ($) {
    return $ === null || $ === undefined
},
isNumber: function ($) {
    return !isNaN($) && typeof $ == "number"
},
isEquals: function ($, _) {
    if ($ !== 0 && _ !== 0)
        if ((mini.isNull($) || $ == "") && (mini.isNull(_) || _ == ""))
            return true;
if ($ && _ && $.getFullYear && _.getFullYear)
    return $.getTime() === _.getTime();
if (typeof $ == "object" && typeof _ == "object" && $ === _)
    return true;
return String($) === String(_)
},
forEach: function (E, D, B) {
    var _ = E.clone();
    for (var A = 0, C = _.length; A < C; A++) {
        var $ = _[A];
        if (D[R05g](B, $, A, E) === false)
            break
    }
},
sort: function (A, _, $) {
    $ = $ || A;
    A.sort(_)
},
removeNode: function ($) {
    jQuery($).remove()
},
elWarp: document.createElement("div")
};
H58 = function (A, _) {
    _ = _.toLowerCase();
    if (!mini.classes[_]) {
        mini.classes[_] = A;
        A[M9NB].type = _
    }
    var $ = A[M9NB].uiCls;
    if (!mini.isNull($) && !mini.uiClasses[$])
        mini.uiClasses[$] = A
};
ZPOi = function (E, A, $) {
    if (typeof A != "function")
        return this;
    var D = E,
	C = D.prototype,
	_ = A[M9NB];
    if (D[Ov] == _)
        return;
    D[Ov] = _;
    D[Ov][FaWb] = A;
    for (var B in _)
        C[B] = _[B];
    if ($)
        for (B in $)
            C[B] = $[B];
return D
};
mini.copyTo(mini, {
    extend: ZPOi,
    regClass: H58,
    debug: false
});
LXks = [];
VMPY = function (_, $) {
    LXks.push([_, $]);
    if (!mini._EventTimer)
        mini._EventTimer = setTimeout(function () {
            _8nb()
        }, 1)
};
_8nb = function () {
    for (var $ = 0, _ = LXks.length; $ < _; $++) {
        var A = LXks[$];
        A[0][R05g](A[1])
    }
    LXks = [];
    mini._EventTimer = null
};
QO2 = function (C) {
    if (typeof C != "string")
        return null;
    var _ = C.split("."),
	D = null;
    for (var $ = 0, A = _.length; $ < A; $++) {
        var B = _[$];
        if (!D)
            D = window[B];
        else
            D = D[B];
        if (!D)
            break
    }
    return D
};
mini.getAndCreate = function ($) {
    if (!$)
        return null;
    if (typeof $ == "string")
        return mini.components[$];
    if (typeof $ == "object")
        if (mini.isControl($))
            return $;
        else if (mini.isElement($))
            return mini.uids[$.uid];
        else
            return mini.create($);
return null
};
mini.create = function ($) {
    if (!$)
        return null;
    if (mini.get($.id) === $)
        return $;
    var _ = this.getClass($.type);
    if (!_)
        return null;
    var A = new _();
    A.set($);
    return A
};
mini.append = function (_, A) {
    _ = X4g(_);
    if (!A || !_)
        return;
    if (typeof A == "string") {
        if (A.charAt(0) == "#") {
            A = X4g(A);
            if (!A)
                return;
            _.appendChild(A);
            return A
        } else {
            if (A.indexOf("<tr") == 0) {
                return jQuery(_).append(A)[0].lastChild;
                return
            }
            var $ = document.createElement("div");
            $.innerHTML = A;
            A = $.firstChild;
            while ($.firstChild)
                _.appendChild($.firstChild);
            return A
        }
    } else {
        _.appendChild(A);
        return A
    }
};
mini.prepend = function (_, A) {
    if (typeof A == "string")
        if (A.charAt(0) == "#")
            A = X4g(A);
        else {
            var $ = document.createElement("div");
            $.innerHTML = A;
            A = $.firstChild
        }
return jQuery(_).prepend(A)[0].firstChild
};
var FmHy = "getBottomVisibleColumns", TUf = "setFrozenStartColumn", PZh1 = "showCollapseButton", F$q = "showFolderCheckBox", _T = "setFrozenEndColumn", _46 = "getAncestorColumns", DTU = "getFilterRowHeight", Sp = "checkSelectOnLoad", WAq = "frozenStartColumn", AB = "allowResizeColumn", KUe = "showExpandButtons", B2V = "requiredErrorText", ORH = "getMaxColumnLevel", ZPU = "isAncestorColumn", EcIc = "allowAlternating", DM = "getBottomColumns", _23 = "isShowRowDetail", L4 = "allowCellSelect", DHm = "showAllCheckBox", M48 = "frozenEndColumn", Rk = "allowMoveColumn", YYKG = "allowSortColumn", JBX = "refreshOnExpand", NVR1 = "showCloseButton", OyL = "unFrozenColumns", Pr0 = "getParentColumn", KBQM = "isVisibleColumn", VA5 = "getFooterHeight", Ald = "getHeaderHeight", DTZ = "_createColumnId", TJ = "getRowDetailEl", Ls = "scrollIntoView", YM7 = "setColumnWidth", BdKb = "setCurrentCell", F9 = "allowRowSelect", ODq = "showSummaryRow", Qp = "showVGridLines", V6 = "showHGridLines", Tj = "checkRecursive", JYw0 = "enableHotTrack", DUc = "popupMaxHeight", QdaN = "popupMinHeight", DAb = "refreshOnClick", JH9 = "getColumnWidth", Cqg = "getEditRowData", CYf = "getParentNode", LeN = "removeNodeCls", $CN = "showRowDetail", Dr = "hideRowDetail", A6i = "commitEditRow", Z2 = "beginEditCell", M_ = "allowCellEdit", IEr = "decimalPlaces", Hk = "showFilterRow", COws = "dropGroupName", BOF = "dragGroupName", _l3N = "showTreeLines", ItwZ = "popupMaxWidth", $VA4 = "popupMinWidth", Wms = "showMinButton", F5V = "showMaxButton", SY0 = "getChildNodes", Ceaw = "getCellEditor", Kdke = "cancelEditRow", NK = "getRowByValue", IDC = "removeItemCls", UMH = "_createCellId", Mhu = "_createItemId", HM3 = "setValueField", X3h = "getAncestors", Hb3m = "collapseNode", Ck5 = "removeRowCls", ZY = "getColumnBox", Zu = "showCheckBox", EPC = "autoCollapse", HGX = "showTreeIcon", IOKa = "checkOnClick", FD0 = "defaultValue", ShoG = "resultAsData", WFK = "resultAsTree", A5ac = "_ParseString", T03 = "getItemValue", FC = "_createRowId", Rlg = "isAutoHeight", IT7A = "findListener", QWc0 = "getRegionEl", Ewq = "removeClass", GHf = "isFirstNode", FSi = "getSelected", ZW6 = "setSelected", ARtO = "multiSelect", ODVe = "tabPosition", X3e = "columnWidth", I2XT = "handlerSize", NQ = "allowSelect", YR = "popupHeight", R71 = "contextMenu", _LhK = "borderStyle", _v3e = "parentField", OiX = "closeAction", Cv2O = "_rowIdField", MZ = "allowResize", MCi = "showToolbar", BJTJ = "deselectAll", Q$ = "treeToArray", YI6 = "eachColumns", IC0 = "getItemText", U_Ap = "isAutoWidth", Ri$ = "_initEvents", FaWb = "constructor", SLy = "addNodeCls", KKj = "expandNode", EaK = "setColumns", IXv = "cancelEdit", YO8 = "moveColumn", Gwl = "removeNode", EI = "setCurrent", HoaN = "totalCount", W6j = "popupWidth", WYB = "titleField", Dv = "valueField", Bd5m = "showShadow", TaXk = "showFooter", Mej = "findParent", VR = "_getColumn", QRH = "_ParseBool", Y5P = "clearEvent", V5n = "getCellBox", UX9 = "selectText", IJjY = "setVisible", EfN = "isGrouping", Jpo4 = "addItemCls", CTG$ = "isSelected", DcOq = "isReadOnly", Ov = "superclass", I6sv = "getRegion", VmPU = "isEditing", LjIM = "hidePopup", SMr = "removeRow", $iz = "addRowCls", YI4 = "increment", Ysl = "allowDrop", IKs_ = "pageIndex", Jhs = "iconStyle", FOi = "errorMode", T2m = "textField", VPhi = "groupName", A8E = "showEmpty", _wQ = "emptyText", Rsza = "showModal", Ul = "getColumn", UT = "getHeight", ClW = "_ParseInt", _0oZ = "showPopup", FD = "updateRow", BZt = "deselects", RPC = "isDisplay", XS9m = "setHeight", X9GT = "removeCls", M9NB = "prototype", $wd = "addClass", Paj = "isEquals", Pfu = "maxValue", _a = "minValue", XtC = "showBody", Kr = "tabAlign", UbK = "sizeList", Ti2 = "pageSize", ZQd = "urlField", MLU = "readOnly", QRh = "getWidth", CAEr = "isFrozen", Aw = "loadData", TgC = "deselect", XlA = "setValue", KJF = "validate", RH = "getAttrs", RG$ = "setWidth", YaK = "doUpdate", SA = "doLayout", NBM = "renderTo", T0B = "setText", XsI = "idField", Ook2 = "getNode", WtRy = "getItem", Smh = "repaint", _D = "selects", JmQP = "setData", P1V = "_create", Yr3P = "destroy", Af = "jsName", VK = "getRow", Zk = "select", BmC = "within", UAC = "addCls", Tlr9 = "render", _20 = "setXY", R05g = "call";
ZaZ = function () {
    this.WP0 = {};
    this.uid = mini.newId(this.WfO);
    if (!this.id)
        this.id = this.uid;
    mini.reg(this)
};
ZaZ[M9NB] = {
    isControl: true,
    id: null,
    WfO: "mini-",
    II8: false,
    W8K: true,
    set: function (A) {
        if (typeof A == "string")
            return this;
        var D = this.XgLp;
        this.XgLp = false;
        var B = A[NBM] || A[Tlr9];
        delete A[NBM];
        delete A[Tlr9];
        for (var $ in A)
            if ($.toLowerCase().indexOf("on") == 0) {
                var F = A[$];
                this.on($.substring(2, $.length).toLowerCase(), F);
                delete A[$]
            }
    for ($ in A) {
        var E = A[$],
			C = "set" + $.charAt(0).toUpperCase() + $.substring(1, $.length),
			_ = this[C];
        if (_)
            _[R05g](this, E);
        else
            this[$] = E
    }
    if (B && this[Tlr9])
        this[Tlr9](B);
    this.XgLp = D;
    if (this[SA])
        this[SA]();
    return this
},
fire: function (A, B) {
    if (this.W8K == false)
        return;
    A = A.toLowerCase();
    var _ = this.WP0[A];
    if (_) {
        if (!B)
            B = {};
        if (B && B != this) {
            B.source = B.sender = this;
            if (!B.type)
                B.type = A
        }
        for (var $ = 0, D = _.length; $ < D; $++) {
            var C = _[$];
            if (C)
                C[0].apply(C[1], [B])
        }
    }
},
on: function (type, fn, scope) {
    if (typeof fn == "string") {
        var f = QO2(fn);
        if (!f) {
            var id = mini.newId("__str_");
            window[id] = fn;
            eval("fn = function(e){var s = " + id + ";var fn = QO2(s); if(fn) {fn[R05g](this,e)}else{eval(s);}}")
        } else
            fn = f
    }
    if (typeof fn != "function" || !type)
        return false;
    type = type.toLowerCase();
    var event = this.WP0[type];
    if (!event)
        event = this.WP0[type] = [];
    scope = scope || this;
    if (!this[IT7A](type, fn, scope))
        event.push([fn, scope]);
    return this
},
un: function ($, C, _) {
    if (typeof C != "function")
        return false;
    $ = $.toLowerCase();
    var A = this.WP0[$];
    if (A) {
        _ = _ || this;
        var B = this[IT7A]($, C, _);
        if (B)
            A.remove(B)
    }
    return this
},
findListener: function (A, E, B) {
    A = A.toLowerCase();
    B = B || this;
    var _ = this.WP0[A];
    if (_)
        for (var $ = 0, D = _.length; $ < D; $++) {
            var C = _[$];
            if (C[0] === E && C[1] === B)
                return C
        }
},
setId: function ($) {
    if (!$)
        throw new Error("id not null");
    if (this.II8)
        throw new Error("id just set only one");
    mini["unreg"](this);
    this.id = $;
    if (this.el)
        this.el.id = $;
    if (this.$g)
        this.$g.id = $ + "$text";
    if (this.$E)
        this.$E.id = $ + "$value";
    this.II8 = true;
    mini.reg(this)
},
getId: function () {
    return this.id
},
destroy: function () {
    mini["unreg"](this);
    this.fire("destroy")
}
};
Jva = function () {
    Jva[Ov][FaWb][R05g](this);
    this[P1V]();
    this.el.uid = this.uid;
    this[Ri$]();
    if (this._clearBorder)
        this.el.style.borderWidth = "0";
    this[UAC](this.uiCls);
    this[RG$](this.width);
    this[XS9m](this.height);
    this.el.style.display = this.visible ? this.QOA : "none"
};
ZPOi(Jva, ZaZ, {
    jsName: null,
    width: "",
    height: "",
    visible: true,
    readOnly: false,
    enabled: true,
    tooltip: "",
    GZk: "mini-readonly",
    LiH: "mini-disabled",
    _create: function () {
        this.el = document.createElement("div")
    },
    _initEvents: function () { },
    within: function ($) {
        if (Uqe(this.el, $.target))
            return true;
        return false
    },
    name: "",
    setName: function ($) {
        this.name = $
    },
    getName: function () {
        return this.name
    },
    isAutoHeight: function () {
        var $ = this.el.style.height;
        return $ == "auto" || $ == ""
    },
    isAutoWidth: function () {
        var $ = this.el.style.width;
        return $ == "auto" || $ == ""
    },
    isFixedSize: function () {
        var $ = this.width,
		_ = this.height;
        if (parseInt($) + "px" == $ && parseInt(_) + "px" == _)
            return true;
        return false
    },
    isRender: function ($) {
        return !!(this.el && this.el.parentNode && this.el.parentNode.tagName)
    },
    render: function (_, $) {
        if (typeof _ === "string")
            if (_ == "#body")
                _ = document.body;
            else
                _ = X4g(_);
        if (!_)
            return;
        if (!$)
            $ = "append";
        $ = $.toLowerCase();
        if ($ == "before")
            jQuery(_).before(this.el);
        else if ($ == "preend")
            jQuery(_).preend(this.el);
        else if ($ == "after")
            jQuery(_).after(this.el);
        else
            _.appendChild(this.el);
        this.el.id = this.id;
        this[SA]();
        this.fire("render")
    },
    getEl: function () {
        return this.el
    },
    setJsName: function ($) {
        this[Af] = $;
        window[$] = this
    },
    getJsName: function () {
        return this[Af]
    },
    setTooltip: function ($) {
        this.tooltip = $;
        this.el.title = $
    },
    getTooltip: function () {
        return this.tooltip
    },
    _sizeChaned: function () {
        this[SA]()
    },
    setWidth: function ($) {
        if (parseInt($) == $)
            $ += "px";
        this.width = $;
        this.el.style.width = $;
        this._sizeChaned()
    },
    getWidth: function (_) {
        var $ = _ ? jQuery(this.el).width() : jQuery(this.el).outerWidth();
        if (_ && this.KDCb) {
            var A = _t(this.KDCb);
            $ = $ - A.left - A.right
        }
        return $
    },
    setHeight: function ($) {
        if (parseInt($) == $)
            $ += "px";
        this.height = $;
        this.el.style.height = $;
        this._sizeChaned()
    },
    getHeight: function (_) {
        var $ = _ ? jQuery(this.el).height() : jQuery(this.el).outerHeight();
        if (_ && this.KDCb) {
            var A = _t(this.KDCb);
            $ = $ - A.top - A.bottom
        }
        return $
    },
    getBox: function () {
        return L05(this.el)
    },
    setBorderStyle: function ($) {
        var _ = this.KDCb || this.el;
        DaZ(_, $);
        this[SA]()
    },
    getBorderStyle: function () {
        return this[_LhK]
    },
    _clearBorder: true,
    setStyle: function ($) {
        this.style = $;
        DaZ(this.el, $);
        if (this._clearBorder)
            this.el.style.borderWidth = "0";
        this.width = this.el.style.width;
        this.height = this.el.style.height;
        this._sizeChaned()
    },
    getStyle: function () {
        return this.style
    },
    setCls: function ($) {
        ZVS(this.el, this.cls);
        E$_(this.el, $);
        this.cls = $
    },
    getCls: function () {
        return this.cls
    },
    addCls: function ($) {
        E$_(this.el, $)
    },
    removeCls: function ($) {
        ZVS(this.el, $)
    },
    _doReadOnly: function () {
        if (this[MLU])
            this[UAC](this.GZk);
        else
            this[X9GT](this.GZk)
    },
    setReadOnly: function ($) {
        this[MLU] = $;
        this._doReadOnly()
    },
    getReadOnly: function () {
        return this[MLU]
    },
    getParent: function (A) {
        var $ = document,
		B = this.el.parentNode;
        while (B != $ && B != null) {
            var _ = mini.get(B);
            if (_) {
                if (!mini.isControl(_))
                    return null;
                if (!A || _.uiCls == A)
                    return _
            }
            B = B.parentNode
        }
        return null
    },
    isReadOnly: function () {
        if (this[MLU] || !this.enabled)
            return true;
        var $ = this.getParent();
        if ($)
            return $[DcOq]();
        return false
    },
    setEnabled: function ($) {
        this.enabled = $;
        if (this.enabled)
            this[X9GT](this.LiH);
        else
            this[UAC](this.LiH);
        this._doReadOnly()
    },
    getEnabled: function () {
        return this.enabled
    },
    enable: function () {
        this.setEnabled(true)
    },
    disable: function () {
        this.setEnabled(false)
    },
    QOA: "",
    setVisible: function ($) {
        this.visible = $;
        if (this.el) {
            this.el.style.display = $ ? this.QOA : "none";
            this[SA]()
        }
    },
    getVisible: function () {
        return this.visible
    },
    show: function () {
        this[IJjY](true)
    },
    hide: function () {
        this[IJjY](false)
    },
    isDisplay: function () {
        if (AGs == false)
            return false;
        var $ = document.body,
		_ = this.el;
        while (1) {
            if (_ == null || !_.style)
                return false;
            if (_ && _.style && _.style.display == "none")
                return false;
            if (_ == $)
                return true;
            _ = _.parentNode
        }
        return true
    },
    QYky: true,
    beginUpdate: function () {
        this.QYky = false
    },
    endUpdate: function () {
        this.QYky = true;
        this[YaK]()
    },
    doUpdate: function () { },
    canLayout: function () {
        if (this.XgLp == false)
            return false;
        return this[RPC]()
    },
    doLayout: function () { },
    layoutChanged: function () {
        if (this.canLayout() == false)
            return;
        this[SA]()
    },
    destroy: function (_) {
        if (this.el);
        if (this.el) {
            mini[Y5P](this.el);
            if (_ !== false) {
                var $ = this.el.parentNode;
                if ($)
                    $.removeChild(this.el)
            }
        }
        this.KDCb = null;
        this.el = null;
        mini["unreg"](this);
        this.fire("destroy")
    },
    focus: function () {
        try {
            var $ = this;
            $.el.focus()
        } catch (_) { }

    },
    blur: function () {
        try {
            var $ = this;
            $.el.blur()
        } catch (_) { }

    },
    allowAnim: true,
    setAllowAnim: function ($) {
        this.allowAnim = $
    },
    getAllowAnim: function () {
        return this.allowAnim
    },
    QL: function () {
        return this.el
    },
    mask: function ($) {
        if (typeof $ == "string")
            $ = {
                html: $
            };
        $ = $ || {};
        $.el = this.QL();
        if (!$.cls)
            $.cls = this.A1u;
        mini.mask($)
    },
    unmask: function () {
        mini.unmask(this.QL())
    },
    //    A1u: "mini-mask-loading",
    //    loadingMsg: "加载中，请稍后...",
    //    loading: function ($) {
    //        this.mask($ || this.loadingMsg)
    //    },
    //    setLoadingMsg: function ($) {
    //        this.loadingMsg = $
    //    },
    //    getLoadingMsg: function () {
    //        return this.loadingMsg
    //    },
    _getContextMenu: function ($) {
        var _ = $;
        if (typeof $ == "string") {
            _ = mini.get($);
            if (!_) {
                mini.parse($);
                _ = mini.get($)
            }
        } else if (mini.isArray($))
            _ = {
                type: "menu",
                items: $
            };
        else if (!mini.isControl($))
            _ = mini.create($);
        return _
    },
    __OnHtmlContextMenu: function (_) {
        var $ = {
            popupEl: this.el,
            htmlEvent: _,
            cancel: false
        };
        this[R71].fire("BeforeOpen", $);
        if ($.cancel == true)
            return;
        this[R71].fire("opening", $);
        if ($.cancel == true)
            return;
        this[R71].showAtPos(_.pageX, _.pageY);
        this[R71].fire("Open", $);
        return false
    },
    contextMenu: null,
    setContextMenu: function ($) {
        var _ = this._getContextMenu($);
        if (!_)
            return;
        if (this[R71] !== _) {
            this[R71] = _;
            this[R71].owner = this;
            Boy(this.el, "contextmenu", this.__OnHtmlContextMenu, this)
        }
    },
    getContextMenu: function () {
        return this[R71]
    },
    setDefaultValue: function ($) {
        this[FD0] = $
    },
    getDefaultValue: function () {
        return this[FD0]
    },
    setValue: function ($) {
        this.value = $
    },
    getValue: function () {
        return this.value
    },
    R_: function ($) { },
    getAttrs: function (C) {
        var I = {},
		F = C.className;
        if (F)
            I.cls = F;
        mini[A5ac](C, I, ["id", "name", "width", "height", "borderStyle", "value", "defaultValue", "contextMenu", "tooltip"]);
        mini[QRH](C, I, ["visible", "enabled", "readOnly"]);
        if (C[MLU] && C[MLU] != "false")
            I[MLU] = true;
        var E = C.style.cssText;
        if (E)
            I.style = E;
        if (isIE9) {
            var _ = C.style.background;
            if (_) {
                if (!I.style)
                    I.style = "";
                I.style += ";background:" + _
            }
        }
        if (this.style)
            if (I.style)
                I.style = this.style + ";" + I.style;
            else
                I.style = this.style;
        if (this[_LhK])
            if (I[_LhK])
                I[_LhK] = this[_LhK] + ";" + I[_LhK];
            else
                I[_LhK] = this[_LhK];
        var B = mini._attrs;
        if (B)
            for (var $ = 0, G = B.length; $ < G; $++) {
                var D = B[$],
				H = D[0],
				A = D[1];
                if (!A)
                    A = "string";
                if (A == "string")
                    mini[A5ac](C, I, [H]);
                else if (A == "bool")
                    mini[QRH](C, I, [H]);
                else if (A == "int")
                    mini[ClW](C, I, [H])
            }
        return I
    }
});
mini._attrs = null;
mini.regHtmlAttr = function (_, $) {
    if (!_)
        return;
    if (!$)
        $ = "string";
    if (!mini._attrs)
        mini._attrs = [];
    mini._attrs.push([_, $])
};
Yw = function () {
    Yw[Ov][FaWb][R05g](this)
};
ZPOi(Yw, Jva, {
    required: false,
    requiredErrorText: "This field is required.",
    LEO: "mini-required",
    errorText: "",
    UF: "mini-error",
    VQ: "mini-invalid",
    errorMode: "icon",
    validateOnChanged: true,
    GJ5i: true,
    validate: function () {
        var $ = {
            value: this.getValue(),
            errorText: "",
            isValid: true
        };
        if (this.required)
            if (mini.isNull($.value) || $.value === "") {
                $.isValid = false;
                $.errorText = this[B2V]
            }
    this.fire("validation", $);
    this.errorText = $.errorText;
    this.setIsValid($.isValid);
    return this.isValid()
},
isValid: function () {
    return this.GJ5i
},
setIsValid: function ($) {
    this.GJ5i = $;
    this.QnB()
},
getIsValid: function () {
    return this.GJ5i
},
setValidateOnChanged: function ($) {
    this.validateOnChanged = $
},
getValidateOnChanged: function ($) {
    return this.validateOnChanged
},
setErrorMode: function ($) {
    if (!$)
        $ = "none";
    this[FOi] = $.toLowerCase();
    if (this.GJ5i == false)
        this.QnB()
},
getErrorMode: function () {
    return this[FOi]
},
setErrorText: function ($) {
    this.errorText = $;
    if (this.GJ5i == false)
        this.QnB()
},
getErrorText: function () {
    return this.errorText
},
setRequired: function ($) {
    this.required = $;
    if (this.required)
        this[UAC](this.LEO);
    else
        this[X9GT](this.LEO)
},
getRequired: function () {
    return this.required
},
setRequiredErrorText: function ($) {
    this[B2V] = $
},
getRequiredErrorText: function () {
    return this[B2V]
},
errorIconEl: null,
getErrorIconEl: function () {
    return this.WR
},
E2VD: function () { },
QnB: function () {
    var $ = this;
    setTimeout(function () {
        $.Cav3()
    }, 1)
},
Cav3: function () {
    this[X9GT](this.UF);
    this[X9GT](this.VQ);
    this.el.title = "";
    if (this.GJ5i == false)
        switch (this[FOi]) {
        case "icon":
            this[UAC](this.UF);
            var $ = this.getErrorIconEl();
            if ($)
                $.title = this.errorText;
            break;
        case "border":
            this[UAC](this.VQ);
            this.el.title = this.errorText;
        default:
            this.E2VD();
            break
    }
    else
        this.E2VD();
    this[SA]()
},
ZsI: function () {
    if (this.validateOnChanged)
        this[KJF]();
    this.fire("valuechanged", {
        value: this.getValue()
    })
},
onValueChanged: function (_, $) {
    this.on("valuechanged", _, $)
},
onValidation: function (_, $) {
    this.on("validation", _, $)
},
getAttrs: function (_) {
    var A = Yw[Ov][RH][R05g](this, _);
    mini[A5ac](_, A, ["onvaluechanged", "onvalidation", "requiredErrorText", "errorMode"]);
    mini[QRH](_, A, ["validateOnChanged"]);
    var $ = _.getAttribute("required");
    if (!$)
        $ = _.required;
    if ($)
        A.required = $ != "false" ? true : false;
    return A
}
});
$oc = function () {
    this.data = [];
    this.N2A = [];
    $oc[Ov][FaWb][R05g](this);
    this[YaK]()
};
ZPOi($oc, Yw, {
    defaultValue: "",
    value: "",
    valueField: "id",
    textField: "text",
    delimiter: ",",
    data: null,
    url: "",
    _on: "mini-list-item",
    BB: "mini-list-item-hover",
    _D2: "mini-list-item-selected",
    set: function (A) {
        if (typeof A == "string")
            return this;
        var $ = A.value;
        delete A.value;
        var B = A.url;
        delete A.url;
        var _ = A.data;
        delete A.data;
        $oc[Ov].set[R05g](this, A);
        if (!mini.isNull(_))
            this[JmQP](_);
        if (!mini.isNull(B))
            this.setUrl(B);
        if (!mini.isNull($))
            this[XlA]($);
        return this
    },
    uiCls: "mini-list",
    _create: function () { },
    _initEvents: function () {
        VMPY(function () {
            Pv3(this.el, "click", this.Qtm, this);
            Pv3(this.el, "dblclick", this._89, this);
            Pv3(this.el, "mousedown", this.CgJ, this);
            Pv3(this.el, "mouseup", this.JE, this);
            Pv3(this.el, "mousemove", this._jK, this);
            Pv3(this.el, "mouseover", this.QwgP, this);
            Pv3(this.el, "mouseout", this.S0ud, this);
            Pv3(this.el, "keydown", this.XiOq, this);
            Pv3(this.el, "keyup", this.EZj, this);
            Pv3(this.el, "contextmenu", this.ZN0, this)
        }, this)
    },
    destroy: function ($) {
        if (this.el) {
            this.el.onclick = null;
            this.el.ondblclick = null;
            this.el.onmousedown = null;
            this.el.onmouseup = null;
            this.el.onmousemove = null;
            this.el.onmouseover = null;
            this.el.onmouseout = null;
            this.el.onkeydown = null;
            this.el.onkeyup = null;
            this.el.oncontextmenu = null
        }
        $oc[Ov][Yr3P][R05g](this, $)
    },
    name: "",
    setName: function ($) {
        this.name = $;
        if (this.$E)
            mini.setAttr(this.$E, "name", this.name)
    },
    Mfp: function (_) {
        var A = $Rz(_.target, this._on);
        if (A) {
            var $ = parseInt(mini.getAttr(A, "index"));
            return this.data[$]
        }
    },
    addItemCls: function (_, A) {
        var $ = this.getItemEl(_);
        if ($)
            E$_($, A)
    },
    removeItemCls: function (_, A) {
        var $ = this.getItemEl(_);
        if ($)
            ZVS($, A)
    },
    getItemEl: function (_) {
        _ = this[WtRy](_);
        var $ = this.data.indexOf(_),
		A = this.S87($);
        return document.getElementById(A)
    },
    VNu: function (_, $) {
        _ = this[WtRy](_);
        if (!_)
            return;
        var A = this.getItemEl(_);
        if ($ && A)
            this[Ls](_);
        if (this.D_Item == _)
            return;
        this.Fce();
        this.D_Item = _;
        E$_(A, this.BB)
    },
    Fce: function () {
        if (!this.D_Item)
            return;
        var $ = this.getItemEl(this.D_Item);
        if ($)
            ZVS($, this.BB);
        this.D_Item = null
    },
    getFocusedItem: function () {
        return this.D_Item
    },
    getFocusedIndex: function () {
        return this.data.indexOf(this.D_Item)
    },
    R0F: null,
    scrollIntoView: function (_) {
        try {
            var $ = this.getItemEl(_),
			A = this.R0F || this.el;
            mini[Ls]($, A, false)
        } catch (B) { }

    },
    getItem: function ($) {
        if (typeof $ == "object")
            return $;
        if (typeof $ == "number")
            return this.data[$];
        return this.findItems($)[0]
    },
    getCount: function () {
        return this.data.length
    },
    indexOf: function ($) {
        return this.data.indexOf($)
    },
    getAt: function ($) {
        return this.data[$]
    },
    updateItem: function ($, _) {
        $ = this[WtRy]($);
        if (!$)
            return;
        mini.copyTo($, _);
        this[YaK]()
    },
    load: function ($) {
        if (typeof $ == "string")
            this.setUrl($);
        else
            this[JmQP]($)
    },
    loadData: function ($) {
        this[JmQP]($)
    },
    setData: function (data) {
        if (typeof data == "string")
            data = eval(data);
        if (!mini.isArray(data))
            data = [];
        this.data = data;
        this[YaK]();
        if (this.value != "") {
            this[BJTJ]();
            var records = this.findItems(this.value);
            this[_D](records)
        }
    },
    getData: function () {
        return this.data.clone()
    },
    setUrl: function ($) {
        this.url = $;
        this.IGi({})
    },
    getUrl: function () {
        return this.url
    },
    IGi: function (params) {
        try {
            this.url = eval(this.url)
        } catch (e) { }

        var e = {
            url: this.url,
            async: false,
            type: "get",
            params: params,
            cancel: false
        };
        this.fire("beforeload", e);
        if (e.cancel == true)
            return;
        var sf = this;
        this.V5o = jQuery.ajax({
            url: e.url,
            async: e.async,
            data: e.params,
            type: e.type,
            cache: false,
            dataType: "text",
            success: function ($) {
                var _ = null;
                try {
                    _ = mini.decode($)
                } catch (A) { }

                var A = {
                    data: _,
                    cancel: false
                };
                sf.fire("preload", A);
                if (A.cancel == true)
                    return;
                sf[JmQP](A.data);
                sf.fire("load");
                setTimeout(function () {
                    sf[SA]()
                }, 100)
            },
            error: function ($, A, _) {
                var B = {
                    xmlHttp: $,
                    errorCode: A
                };
                sf.fire("loaderror", B)
            }
        })
    },
    setValue: function ($) {
        if (mini.isNull($))
            $ = "";
        if (this.value !== $) {
            var _ = this.findItems(this.value);
            this[BZt](_);
            this.value = $;
            if (this.$E)
                this.$E.value = $;
            _ = this.findItems(this.value);
            this[_D](_)
        }
    },
    getValue: function () {
        return this.value
    },
    getFormValue: function () {
        return this.value
    },
    setValueField: function ($) {
        this[Dv] = $
    },
    getValueField: function () {
        return this[Dv]
    },
    setTextField: function ($) {
        this[T2m] = $
    },
    getTextField: function () {
        return this[T2m]
    },
    getItemValue: function ($) {
        return String($[this.valueField])
    },
    getItemText: function ($) {
        var _ = $[this.textField];
        return mini.isNull(_) ? "" : String(_)
    },
    WDb0: function (A) {
        if (mini.isNull(A))
            A = [];
        if (!mini.isArray(A))
            A = this.findItems(A);
        var B = [],
		C = [];
        for (var _ = 0, D = A.length; _ < D; _++) {
            var $ = A[_];
            if ($) {
                B.push(this[T03]($));
                C.push(this[IC0]($))
            }
        }
        return [B.join(this.delimiter), C.join(this.delimiter)]
    },
    findItems: function (B) {
        if (mini.isNull(B) || B === "")
            return [];
        var E = String(B).split(this.delimiter),
		D = this.data,
		H = {};
        for (var F = 0, A = D.length; F < A; F++) {
            var _ = D[F],
			I = _[this.valueField];
            H[I] = _
        }
        var C = [];
        for (var $ = 0, G = E.length; $ < G; $++) {
            I = E[$],
			_ = H[I];
            if (_)
                C.push(_)
        }
        return C
    },
    RRk: null,
    N2A: [],
    multiSelect: false,
    MVO: function () {
        for (var _ = this.N2A.length - 1; _ >= 0; _--) {
            var $ = this.N2A[_];
            if (this.data.indexOf($) == -1)
                this.N2A.removeAt(_)
        }
        var A = this.WDb0(this.N2A);
        this.value = A[0];
        if (this.$E)
            this.$E.value = this.value
    },
    setMultiSelect: function ($) {
        this[ARtO] = $
    },
    getMultiSelect: function () {
        return this[ARtO]
    },
    isSelected: function ($) {
        if (!$)
            return false;
        return this.N2A.indexOf($) != -1
    },
    getSelecteds: function () {
        return this.N2A.clone()
    },
    setSelected: function ($) {
        if ($) {
            this.RRk = $;
            this[Zk]($)
        }
    },
    getSelected: function () {
        return this.RRk
    },
    select: function ($) {
        $ = this[WtRy]($);
        if (!$)
            return;
        if (this[CTG$]($))
            return;
        this[_D]([$])
    },
    deselect: function ($) {
        $ = this[WtRy]($);
        if (!$)
            return;
        if (!this[CTG$]($))
            return;
        this[BZt]([$])
    },
    selectAll: function () {
        var $ = this.data.clone();
        this[_D]($)
    },
    deselectAll: function () {
        this[BZt](this.N2A)
    },
    clearSelect: function () {
        this[BJTJ]()
    },
    selects: function (A) {
        if (!A || A.length == 0)
            return;
        A = A.clone();
        for (var _ = 0, C = A.length; _ < C; _++) {
            var $ = A[_];
            if (!this[CTG$]($))
                this.N2A.push($)
        }
        var B = this;
        setTimeout(function () {
            B.Hzr()
        }, 1)
    },
    deselects: function (A) {
        if (!A || A.length == 0)
            return;
        A = A.clone();
        for (var _ = A.length - 1; _ >= 0; _--) {
            var $ = A[_];
            if (this[CTG$]($))
                this.N2A.remove($)
        }
        var B = this;
        setTimeout(function () {
            B.Hzr()
        }, 1)
    },
    Hzr: function () {
        var C = this.WDb0(this.N2A);
        this.value = C[0];
        if (this.$E)
            this.$E.value = this.value;
        for (var A = 0, D = this.data.length; A < D; A++) {
            var _ = this.data[A],
			F = this[CTG$](_);
            if (F)
                this[Jpo4](_, this._D2);
            else
                this[IDC](_, this._D2);
            var $ = this.data.indexOf(_),
			E = this.K3Y_($),
			B = document.getElementById(E);
            if (B)
                B.checked = !!F
        }
    },
    GyS: function (_, B) {
        var $ = this.WDb0(this.N2A);
        this.value = $[0];
        if (this.$E)
            this.$E.value = this.value;
        var A = {
            selecteds: this.getSelecteds(),
            selected: this[FSi](),
            value: this.getValue()
        };
        this.fire("SelectionChanged", A)
    },
    K3Y_: function ($) {
        return this.uid + "$ck$" + $
    },
    S87: function ($) {
        return this.uid + "$" + $
    },
    Qtm: function ($) {
        this.ZtcL($, "Click")
    },
    _89: function ($) {
        this.ZtcL($, "Dblclick")
    },
    CgJ: function ($) {
        this.ZtcL($, "MouseDown")
    },
    JE: function ($) {
        this.ZtcL($, "MouseUp")
    },
    _jK: function ($) {
        this.ZtcL($, "MouseMove")
    },
    QwgP: function ($) {
        this.ZtcL($, "MouseOver")
    },
    S0ud: function ($) {
        this.ZtcL($, "MouseOut")
    },
    XiOq: function ($) {
        this.ZtcL($, "KeyDown")
    },
    EZj: function ($) {
        this.ZtcL($, "KeyUp")
    },
    ZN0: function ($) {
        this.ZtcL($, "ContextMenu")
    },
    ZtcL: function (C, A) {
        if (!this.enabled)
            return;
        var $ = this.Mfp(C);
        if (!$)
            return;
        var B = this["_OnItem" + A];
        if (B)
            B[R05g](this, $, C);
        else {
            var _ = {
                item: $,
                htmlEvent: C
            };
            this.fire("item" + A, _)
        }
    },
    _OnItemClick: function ($, A) {
        if (this[DcOq]() || this.enabled == false || $.enabled === false) {
            A.preventDefault();
            return
        }
        var _ = this.getValue();
        if (this[ARtO]) {
            if (this[CTG$]($)) {
                this[TgC]($);
                if (this.RRk == $)
                    this.RRk = null
            } else {
                this[Zk]($);
                this.RRk = $
            }
            this.GyS()
        } else if (!this[CTG$]($)) {
            this[BJTJ]();
            this[Zk]($);
            this.RRk = $;
            this.GyS()
        }
        if (_ != this.getValue())
            this.ZsI();
        var A = {
            item: $,
            htmlEvent: A
        };
        this.fire("itemclick", A)
    },
    Jiq: true,
    _OnItemMouseOut: function ($, _) {
        if (!this.enabled)
            return;
        if (this.Jiq)
            this.Fce();
        var _ = {
            item: $,
            htmlEvent: _
        };
        this.fire("itemmouseout", _)
    },
    _OnItemMouseMove: function ($, _) {
        if (!this.enabled || $.enabled === false)
            return;
        this.VNu($);
        var _ = {
            item: $,
            htmlEvent: _
        };
        this.fire("itemmousemove", _)
    },
    onItemClick: function (_, $) {
        this.on("itemclick", _, $)
    },
    onItemMouseDown: function (_, $) {
        this.on("itemmousedown", _, $)
    },
    onBeforeLoad: function (_, $) {
        this.on("beforeload", _, $)
    },
    onLoad: function (_, $) {
        this.on("load", _, $)
    },
    onLoadError: function (_, $) {
        this.on("loaderror", _, $)
    },
    onPreLoad: function (_, $) {
        this.on("preload", _, $)
    },
    getAttrs: function (C) {
        var G = $oc[Ov][RH][R05g](this, C);
        mini[A5ac](C, G, ["url", "data", "value", "textField", "valueField", "onitemclick", "onitemmousemove", "onselectionchanged", "onitemdblclick", "onbeforeload", "onload", "onloaderror", "ondataload"]);
        mini[QRH](C, G, ["multiSelect"]);
        var E = G[Dv] || this[Dv],
		B = G[T2m] || this[T2m];
        if (C.nodeName.toLowerCase() == "select") {
            var D = [];
            for (var A = 0, F = C.length; A < F; A++) {
                var _ = C.options[A],
				$ = {};
                $[B] = _.text;
                $[E] = _.value;
                D.push($)
            }
            if (D.length > 0)
                G.data = D
        }
        return G
    }
});
mini._Layouts = {};
mini.layout = function ($, _) {
    function A(C) {
        var D = mini.get(C);
        if (D) {
            if (D[SA])
                if (!mini._Layouts[D.uid]) {
                    mini._Layouts[D.uid] = D;
                    if (_ !== false || D.isFixedSize() == false)
                        D[SA](false);
                    delete mini._Layouts[D.uid]
                }
    } else {
        var E = C.childNodes;
        if (E)
            for (var $ = 0, F = E.length; $ < F; $++) {
                var B = E[$];
                A(B)
            }
}
}
if (!$)
    $ = document.body;
A($)
};
mini.applyTo = function (_) {
    _ = X4g(_);
    if (!_)
        return this;
    if (mini.get(_))
        throw new Error("not applyTo a mini control");
    var $ = this[RH](_);
    delete $._applyTo;
    if (mini.isNull($[FD0]) && !mini.isNull($.value))
        $[FD0] = $.value;
    var A = _.parentNode;
    if (A && this.el != _)
        A.replaceChild(this.el, _);
    this.set($);
    this.R_(_);
    return this
};
mini._doParse = function (G) {
    var F = G.nodeName.toLowerCase();
    if (!F)
        return;
    var B = G.className;
    if (B) {
        var $ = mini.get(G);
        if (!$) {
            var H = B.split(" ");
            for (var E = 0, C = H.length; E < C; E++) {
                var A = H[E],
				I = mini.getClassByUICls(A);
                if (I) {
                    var D = new I();
                    mini.applyTo[R05g](D, G);
                    G = D.el;
                    break
                }
            }
        }
    }
    if (F == "select" || Mjm(G, "mini-menu") || Mjm(G, "mini-datagrid") || Mjm(G, "mini-treegrid") || Mjm(G, "mini-tree") || Mjm(G, "mini-button") || Mjm(G, "mini-textbox") || Mjm(G, "mini-buttonedit"))
        return;
    var J = mini[SY0](G, true);
    for (E = 0, C = J.length; E < C; E++) {
        var _ = J[E];
        if (_.nodeType == 1)
            if (_.parentNode == G)
                mini._doParse(_)
}
};
mini._Removes = [];
mini.parse = function ($) {
    if (typeof $ == "string") {
        var A = $;
        $ = X4g(A);
        if (!$)
            $ = document.body
    }
    if ($ && !mini.isElement($))
        $ = $.el;
    if (!$)
        $ = document.body;
    var _ = AGs;
    if (isIE)
        AGs = false;
    mini._doParse($);
    AGs = _;
    mini.layout($)
};
mini[A5ac] = function (B, A, E) {
    for (var $ = 0, D = E.length; $ < D; $++) {
        var C = E[$],
		_ = mini.getAttr(B, C);
        if (_)
            A[C] = _
    }
};
mini[QRH] = function (B, A, E) {
    for (var $ = 0, D = E.length; $ < D; $++) {
        var C = E[$],
		_ = mini.getAttr(B, C);
        if (_)
            A[C] = _ == "true" ? true : false
    }
};
mini[ClW] = function (B, A, E) {
    for (var $ = 0, D = E.length; $ < D; $++) {
        var C = E[$],
		_ = parseInt(mini.getAttr(B, C));
        if (!isNaN(_))
            A[C] = _
    }
};
mini._ParseColumns = function (N) {
    var G = [],
	O = mini[SY0](N);
    for (var M = 0, H = O.length; M < H; M++) {
        var C = O[M],
		T = jQuery(C),
		D = {},
		J = null,
		K = null,
		_ = mini[SY0](C);
        if (_)
            for (var $ = 0, P = _.length; $ < P; $++) {
                var B = _[$],
				A = jQuery(B).attr("property");
                if (!A)
                    continue;
                A = A.toLowerCase();
                if (A == "columns") {
                    D.columns = mini._ParseColumns(B);
                    jQuery(B).remove()
                }
                if (A == "editor" || A == "filter") {
                    var F = B.className,
					R = F.split(" ");
                    for (var L = 0, S = R.length; L < S; L++) {
                        var E = R[L],
						Q = mini.getClassByUICls(E);
                        if (Q) {
                            var I = new Q();
                            if (A == "filter") {
                                K = I[RH](B);
                                K.type = I.type
                            } else {
                                J = I[RH](B);
                                J.type = I.type
                            }
                            break
                        }
                    }
                    jQuery(B).remove()
                }
            }
    D.header = C.innerHTML;
    mini[A5ac](C, D, ["name", "header", "field", "editor", "filter", "renderer", "width", "type", "renderer", "headerAlign", "align", "headerCls", "cellCls", "headerStyle", "cellStyle", "displayField", "dateFormat", "listFormat", "mapFormat", "trueValue", "falseValue", "dataType", "vtype"]);
    mini[QRH](C, D, ["visible", "readOnly", "allowSort", "allowReisze", "allowMove", "allowDrag", "autoShowPopup", "unique"]);
    if (J)
        D.editor = J;
    if (K)
        D.filter = K;
    if (D.dataType)
        D.dataType = D.dataType.toLowerCase();
    G.push(D)
}
return G
};
mini._Columns = {};
mini[VR] = function ($) {
    var _ = mini._Columns[$.toLowerCase()];
    if (!_)
        return {};
    return _()
};
mini.IndexColumn = function ($) {
    return mini.copyTo({
        width: 30,
        cellCls: "",
        align: "center",
        draggable: false,
        init: function ($) {
            $.on("addrow", this.__OnIndexChanged, this);
            $.on("removerow", this.__OnIndexChanged, this);
            $.on("moverow", this.__OnIndexChanged, this);
            if ($.isTree) {
                $.on("loadnode", this.__OnIndexChanged, this);
                this._gridUID = $.uid;
                this[Cv2O] = "_id"
            }
        },
        getNumberId: function ($) {
            return this._gridUID + "$number$" + $[this._rowIdField]
        },
        createNumber: function ($, _) {
            if (mini.isNull($[IKs_]))
                return _ + 1;
            else
                return ($[IKs_] * $[Ti2]) + _ + 1
        },
        renderer: function (A) {
            var $ = A.sender;
            if (this.draggable) {
                if (!A.cellStyle)
                    A.cellStyle = "";
                A.cellStyle += ";cursor:move;"
            }
            var _ = "<div id=\"" + this.getNumberId(A.record) + "\">";
            if (mini.isNull($[IKs_]))
                _ += A.rowIndex + 1;
            else
                _ += ($[IKs_] * $[Ti2]) + A.rowIndex + 1;
            _ += "</div>";
            return _
        },
        __OnIndexChanged: function (F) {
            var $ = F.sender,
			C = $.toArray();
            for (var A = 0, D = C.length; A < D; A++) {
                var _ = C[A],
				E = this.getNumberId(_),
				B = document.getElementById(E);
                if (B)
                    B.innerHTML = this.createNumber($, A)
            }
        }
    }, $)
};
mini._Columns["indexcolumn"] = mini.IndexColumn;
mini.CheckColumn = function ($) {
    return mini.copyTo({
        width: 30,
        cellCls: "mini-checkcolumn",
        headerCls: "mini-checkcolumn",
        _multiRowSelect: true,
        header: function ($) {
            var A = this.uid + "checkall",
			_ = "<input type=\"checkbox\" id=\"" + A + "\" />";
            if (this[ARtO] == false)
                _ = "";
            return _
        },
        getCheckId: function ($) {
            return this._gridUID + "$checkcolumn$" + $[this._rowIdField]
        },
        init: function ($) {
            $.on("selectionchanged", this.T76, this);
            $.on("HeaderCellClick", this.Lh4, this)
        },
        renderer: function (C) {
            var B = this.getCheckId(C.record),
			_ = C.sender[CTG$](C.record),
			A = "checkbox",
			$ = C.sender;
            if ($[ARtO] == false)
                A = "radio";
            return "<input type=\"" + A + "\" id=\"" + B + "\" " + (_ ? "checked" : "") + " hidefocus style=\"outline:none;\" onclick=\"return false\"/>"
        },
        Lh4: function (B) {
            var $ = B.sender,
			A = $.uid + "checkall",
			_ = document.getElementById(A);
            if (_)
                if ($[ARtO]) {
                    if (_.checked)
                        $.selectAll();
                    else
                        $[BJTJ]()
                } else {
                    $[BJTJ]();
                    if (_.checked)
                        $[Zk](0)
                }
    },
    T76: function (G) {
        var $ = G.sender,
			C = $.toArray();
        for (var A = 0, D = C.length; A < D; A++) {
            var _ = C[A],
				F = $[CTG$](_),
				E = $.uid + "$checkcolumn$" + _[$._rowIdField],
				B = document.getElementById(E);
            if (B)
                B.checked = F
        }
    }
}, $)
};
mini._Columns["checkcolumn"] = mini.CheckColumn;
mini.ExpandColumn = function ($) {
    return mini.copyTo({
        width: 30,
        cellCls: "",
        align: "center",
        draggable: false,
        cellStyle: "padding:0",
        renderer: function ($) {
            return "<a class=\"mini-grid-ecIcon\" href=\"javascript:#\" onclick=\"return false\"></a>"
        },
        init: function ($) {
            $.on("cellclick", this._Eo, this)
        },
        _Eo: function (A) {
            var $ = A.sender;
            if (A.column == this && $[_23])
                if ($Rz(A.htmlEvent.target, "mini-grid-ecIcon")) {
                    var _ = $[_23](A.record);
                    if ($.autoHideRowDetail)
                        $.hideAllRowDetail();
                    if (_)
                        $[Dr](A.record);
                    else
                        $[$CN](A.record)
                }
    }
}, $)
};
mini._Columns["expandcolumn"] = mini.ExpandColumn;
ME8NColumn = function ($) {
    return mini.copyTo({
        _type: "checkboxcolumn",
        header: "#",
        headerAlign: "center",
        cellCls: "mini-checkcolumn",
        trueValue: true,
        falseValue: false,
        readOnly: false,
        getCheckId: function ($) {
            return this._gridUID + "$checkbox$" + $[this._rowIdField]
        },
        renderer: function (B) {
            var A = this.getCheckId(B.record),
			_ = B.record[B.field] == this.trueValue ? true : false,
			$ = "checkbox";
            return "<input type=\"" + $ + "\" id=\"" + A + "\" " + (_ ? "checked" : "") + " hidefocus style=\"outline:none;\" onclick=\"return false;\"/>"
        },
        init: function ($) {
            this.grid = $;
            $.on("cellclick", function (C) {
                if (C.column == this) {
                    if (this[MLU])
                        return;
                    var B = this.getCheckId(C.record),
					A = C.htmlEvent.target;
                    if (A.id == B) {
                        C.cancel = false;
                        C.value = C.record[C.field];
                        $.fire("cellbeginedit", C);
                        if (C.cancel !== true) {
                            var _ = C.record[C.field] == this.trueValue ? this.falseValue : this.trueValue;
                            if ($.R9g9)
                                $.R9g9(C.record, C.column, _)
                        }
                    }
                }
            }, this);
            var _ = parseInt(this.trueValue),
			A = parseInt(this.falseValue);
            if (!isNaN(_))
                this.trueValue = _;
            if (!isNaN(A))
                this.falseValue = A
        }
    }, $)
};
mini._Columns["checkboxcolumn"] = ME8NColumn;
ImYColumn = function ($) {
    return mini.copyTo({
        renderer: function (M) {
            var _ = M.value ? String(M.value) : "",
			C = _.split(","),
			D = "id",
			J = "text",
			A = {},
			G = M.column.editor;
            if (G && G.type == "combobox") {
                var B = this._combobox;
                if (!B) {
                    if (mini.isControl(G))
                        B = G;
                    else
                        B = mini.create(G);
                    this._combobox = B
                }
                D = B.getValueField();
                J = B.getTextField();
                A = this._valueMaps;
                if (!A) {
                    A = {};
                    var K = B.getData();
                    for (var H = 0, E = K.length; H < E; H++) {
                        var $ = K[H];
                        A[$[D]] = $
                    }
                    this._valueMaps = A
                }
            }
            var L = [];
            for (H = 0, E = C.length; H < E; H++) {
                var F = C[H],
				$ = A[F];
                if ($) {
                    var I = $[J] || "";
                    L.push(I)
                }
            }
            return L.join(",")
        }
    }, $)
};
mini._Columns["comboboxcolumn"] = ImYColumn;
Ca = function ($) {
    this.owner = $;
    Boy(this.owner.el, "mousedown", this.CgJ, this)
};
Ca[M9NB] = {
    CgJ: function (_) {
        if (Mjm(_.target, "mini-grid-resizeGrid") && this.owner[MZ]) {
            var $ = this.O33();
            $.start(_)
        }
    },
    O33: function () {
        if (!this._resizeDragger)
            this._resizeDragger = new mini.Drag({
                capture: true,
                onStart: mini.createDelegate(this.IA, this),
                onMove: mini.createDelegate(this.XIeJ, this),
                onStop: mini.createDelegate(this.$vRk, this)
            });
        return this._resizeDragger
    },
    IA: function ($) {
        this.proxy = mini.append(document.body, "<div class=\"mini-grid-resizeProxy\"></div>");
        this.proxy.style.cursor = "se-resize";
        this.elBox = L05(this.owner.el);
        X7y(this.proxy, this.elBox)
    },
    XIeJ: function (B) {
        var $ = this.owner,
		D = B.now[0] - B.init[0],
		_ = B.now[1] - B.init[1],
		A = this.elBox.width + D,
		C = this.elBox.height + _;
        if (A < $.minWidth)
            A = $.minWidth;
        if (C < $.minHeight)
            C = $.minHeight;
        if (A > $.maxWidth)
            A = $.maxWidth;
        if (C > $.maxHeight)
            C = $.maxHeight;
        mini.setSize(this.proxy, A, C)
    },
    $vRk: function ($, A) {
        if (!this.proxy)
            return;
        var _ = L05(this.proxy);
        jQuery(this.proxy).remove();
        this.proxy = null;
        this.elBox = null;
        if (A) {
            this.owner[RG$](_.width);
            this.owner[XS9m](_.height)
        }
    }
};
mini.__IFrameCreateCount = 1;
mini.createIFrame = function (C, D) {
    var F = "__iframe_onload" + mini.__IFrameCreateCount++;
    window[F] = _;
    var E = "<iframe style=\"width:100%;height:100%;\" onload=\"" + F + "()\"  frameborder=\"0\"></iframe>",
	$ = document.createElement("div"),
	B = mini.append($, E),
	G = false;
    setTimeout(function () {
        if (B) {
            B.src = C;
            G = true
        }
    }, 5);
    var A = true;
    function _() {
        if (G == false)
            return;
        setTimeout(function () {
            if (D)
                D(B, A);
            A = false
        }, 1)
    }
    B._ondestroy = function () {
        window[F] = mini.emptyFn;
        B.src = "";
        B._ondestroy = null;
        B = null
    };
    return B
};
GeQ = function (C) {
    if (typeof C == "string")
        C = {
            url: C
        };
    C = mini.copyTo({
        width: 700,
        height: 400,
        allowResize: true,
        allowModal: true,
        closeAction: "destroy",
        title: "",
        titleIcon: "",
        iconCls: "",
        iconStyle: "",
        bodyStyle: "padding:0",
        url: "",
        showCloseButton: true,
        showFooter: false
    }, C);
    C[OiX] = "destroy";
    var $ = C.onload;
    delete C.onload;
    var B = C.ondestroy;
    delete C.ondestroy;
    var _ = C.url;
    delete C.url;
    var A = new Hjg();
    A.set(C);
    A.load(_, $, B);
    A.show();
    return A
};
mini.open = function (B) {
    if (!B)
        return;
    B.Owner = window;
    var $ = [];
    function _(A) {
        if (A.mini)
            $.push(A);
        if (A.parent && A.parent != A)
            _(A.parent)
    }
    _(window);
    var A = $[$.length - 1];
    return A.GeQ(B)
};
mini.openTop = mini.open;
mini.getData = function (C, A, E, D, _) {
    var $ = mini.getText(C, A, E, D, _),
	B = mini.decode($);
    return B
};
mini.getText = function (B, A, D, C, _) {
    var $ = null;
    jQuery.ajax({
        url: B,
        data: A,
        async: false,
        type: _ ? _ : "get",
        cache: false,
        dataType: "text",
        success: function (A, _) {
            $ = A
        },
        error: C
    });
    return $
};
if (!window.mini_RootPath)
    mini_RootPath = "/";
RXn = function (B) {
    var A = document.getElementsByTagName("script"),
	D = "";
    for (var $ = 0, E = A.length; $ < E; $++) {
        var C = A[$].src;
        if (C.indexOf(B) != -1) {
            var F = C.split(B);
            D = F[0];
            break
        }
    }
    var _ = location.href;
    _ = _.split("#")[0];
    _ = _.split("?")[0];
    F = _.split("/");
    F.length = F.length - 1;
    _ = F.join("/");
    if (D.indexOf("http:") == -1 && D.indexOf("file:") == -1)
        D = _ + "/" + D;
    return D
};
if (!window.mini_JSPath)
    mini_JSPath = RXn("miniui.js");
mini.update = function (A, _) {
    if (typeof A == "string")
        A = {
            url: A
        };
    if (_)
        A.el = _;
    A = mini.copyTo({
        el: null,
        url: "",
        async: false,
        type: "get",
        cache: false,
        dataType: "text",
        success: function (_) {
            var B = A.el;
            if (B) {
                $(B).html(_);
                mini.parse(B)
            }
        },
        error: function ($, A, _) { }

    }, A);
    jQuery.ajax(A)
};
mini.createSingle = function ($) {
    if (typeof $ == "string")
        $ = mini.getClass($);
    if (typeof $ != "function")
        return;
    var _ = $.single;
    if (!_)
        _ = $.single = new $();
    return _
};
mini.createTopSingle = function ($) {
    if (typeof $ != "function")
        return;
    var _ = $[M9NB].type;
    if (top && top != window && top.mini && top.mini.getClass(_))
        return top.mini.createSingle(_);
    else
        return mini.createSingle($)
};
mini.sortTypes = {
    "string": function ($) {
        return String($).toUpperCase()
    },
    "date": function ($) {
        if (!$)
            return 0;
        if (mini.isDate($))
            return $.getTime();
        return mini.parseDate(String($))
    },
    "float": function (_) {
        var $ = parseFloat(String(_).replace(/,/g, ""));
        return isNaN($) ? 0 : $
    },
    "int": function (_) {
        var $ = parseInt(String(_).replace(/,/g, ""), 10);
        return isNaN($) ? 0 : $
    }
};
mini._ValidateVType = function (G, $, K, H) {
    var F = G.split(";");
    for (var E = 0, C = F.length; E < C; E++) {
        var G = F[E].trim(),
		J = G.split(":"),
		A = J[0],
		_ = J[1];
        if (_)
            _ = _.split(",");
        else
            _ = [];
        var D = mini.VTypes[A];
        if (D) {
            var I = D($, _);
            if (I !== true) {
                K.isValid = false;
                var B = J[0] + "ErrorText";
                K.errorText = H[B] || mini.VTypes[B] || "";
                K.errorText = String.format(K.errorText, _[0], _[1], _[2], _[3], _[4]);
                break
            }
        }
    }
};
mini._getErrorText = function ($, _) {
    if ($ && $[_])
        return $[_];
    else
        return mini.VTypes[_]
};
mini.VTypes = {
    uniqueErrorText: "This field is unique.",
    requiredErrorText: "This field is required.",
    emailErrorText: "Please enter a valid email address.",
    urlErrorText: "Please enter a valid URL.",
    floatErrorText: "Please enter a valid number.",
    intErrorText: "Please enter only digits",
    dateErrorText: "Please enter a valid date. Date format is {0}",
    maxLengthErrorText: "Please enter no more than {0} characters.",
    minLengthErrorText: "Please enter at least {0} characters.",
    maxErrorText: "Please enter a value less than or equal to {0}.",
    minErrorText: "Please enter a value greater than or equal to {0}.",
    rangeLengthErrorText: "Please enter a value between {0} and {1} characters long.",
    rangeCharErrorText: "Please enter a value between {0} and {1} characters long.",
    rangeErrorText: "Please enter a value between {0} and {1}.",
    required: function (_, $) {
        if (mini.isNull(_) || _ === "")
            return false;
        return true
    },
    email: function (_, $) {
        if (mini.isNull(_) || _ === "")
            return true;
        if (_.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
            return true;
        else
            return false
    },
    url: function (A, $) {
        if (mini.isNull(A) || A === "")
            return true;
        function _(_) {
            _ = _.toLowerCase();
            var $ = "^((https|http|ftp|rtsp|mms)?://)" + "?(([0-9a-z_!~*'().&=+$%-]+:)?[0-9a-z_!~*'().&=+$%-]+@)?" + "(([0-9]{1,3}.){3}[0-9]{1,3}" + "|" + "([0-9a-z_!~*'()-]+.)*" + "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]." + "[a-z]{2,6})" + "(:[0-9]{1,4})?" + "((/?)|" + "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$",
			A = new RegExp($);
            if (A.test(_))
                return (true);
            else
                return (false)
        }
        return _(A)
    },
    "int": function (A, _) {
        if (mini.isNull(A) || A === "")
            return true;
        function $(_) {
            var $ = String(_);
            return $.length > 0 && !(/[^0-9]/).test($)
        }
        return $(A)
    },
    "float": function (A, _) {
        if (mini.isNull(A) || A === "")
            return true;
        function $(_) {
            var $ = String(_);
            return $.length > 0 && !(/[^0-9.]/).test($)
        }
        return $(A)
    },
    "date": function (B, _) {
        if (mini.isNull(B) || B === "")
            return true;
        if (!B)
            return false;
        var $ = null,
		A = _[0];
        if (A) {
            $ = mini.parseDate(B, A);
            if ($ && $.getFullYear)
                if (mini.formatDate($, A) == B)
                    return true
            } else {
                $ = mini.parseDate(B, "yyyy-MM-dd");
                if (!$)
                    $ = mini.parseDate(B, "yyyy/MM/dd");
                if (!$)
                    $ = mini.parseDate(B, "MM/dd/yyyy");
                if ($ && $.getFullYear)
                    return true
            }
            return false
        },
        maxLength: function (A, $) {
            if (mini.isNull(A) || A === "")
                return true;
            var _ = parseInt($);
            if (!A || isNaN(_))
                return true;
            if (A.length <= _)
                return true;
            else
                return false
        },
        minLength: function (A, $) {
            if (mini.isNull(A) || A === "")
                return true;
            var _ = parseInt($);
            if (isNaN(_))
                return true;
            if (A.length >= _)
                return true;
            else
                return false
        },
        rangeLength: function (B, _) {
            if (mini.isNull(B) || B === "")
                return true;
            if (!B)
                return false;
            var $ = parseFloat(_[0]),
		A = parseFloat(_[1]);
            if (isNaN($) || isNaN(A))
                return true;
            if ($ <= B.length && B.length <= A)
                return true;
            return false
        },
        rangeChar: function (G, B) {
            if (mini.isNull(G) || G === "")
                return true;
            var A = parseFloat(B[0]),
		E = parseFloat(B[1]);
            if (isNaN(A) || isNaN(E))
                return true;
            function C(_) {
                var $ = new RegExp("^[\u4e00-\u9fa5]+$");
                if ($.test(_))
                    return true;
                return false
            }
            var $ = 0,
		F = String(G).split("");
            for (var _ = 0, D = F.length; _ < D; _++)
                if (C(F[_]))
                    $ += 2;
                else
                    $ += 1;
        if (A <= $ && $ <= E)
            return true;
        return false
    },
    range: function (B, _) {
        if (mini.isNull(B) || B === "")
            return true;
        B = parseFloat(B);
        if (isNaN(B))
            return false;
        var $ = parseFloat(_[0]),
		A = parseFloat(_[1]);
        if (isNaN($) || isNaN(A))
            return true;
        if ($ <= B && B <= A)
            return true;
        return false
    }
};
mini.emptyFn = function () { };
mini.Drag = function ($) {
    mini.copyTo(this, $)
};
mini.Drag[M9NB] = {
    onStart: mini.emptyFn,
    onMove: mini.emptyFn,
    onStop: mini.emptyFn,
    capture: false,
    fps: 20,
    event: null,
    delay: 80,
    start: function (_) {
        _.preventDefault();
        if (_)
            this.event = _;
        this.now = this.init = [this.event.pageX, this.event.pageY];
        var $ = document;
        Boy($, "mousemove", this.move, this);
        Boy($, "mouseup", this.stop, this);
        Boy($, "contextmenu", this.contextmenu, this);
        if (this.context)
            Boy(this.context, "contextmenu", this.contextmenu, this);
        this.trigger = _.target;
        mini.selectable(this.trigger, false);
        mini.selectable($.body, false);
        if (this.capture)
            if (isIE)
                this.trigger.setCapture(true);
            else if (document.captureEvents)
                document.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP | Event.MOUSEDOWN);
    this.started = false;
    this.startTime = new Date()
},
contextmenu: function ($) {
    if (this.context)
        Ej(this.context, "contextmenu", this.contextmenu, this);
    Ej(document, "contextmenu", this.contextmenu, this);
    $.preventDefault();
    $.stopPropagation()
},
move: function (_) {
    if (this.delay)
        if (new Date() - this.startTime < this.delay)
            return;
if (!this.started) {
    this.started = true;
    this.onStart(this)
}
var $ = this;
if (!this.timer) {
    $.now = [_.pageX, _.pageY];
    $.event = _;
    $.onMove($);
    $.timer = null
}
},
stop: function (B) {
    this.now = [B.pageX, B.pageY];
    this.event = B;
    if (this.timer) {
        clearTimeout(this.timer);
        this.timer = null
    }
    var A = document;
    mini.selectable(this.trigger, true);
    mini.selectable(A.body, true);
    if (this.capture)
        if (isIE)
            this.trigger.releaseCapture();
        else if (document.captureEvents)
            document.releaseEvents(Event.MOUSEMOVE | Event.MOUSEUP | Event.MOUSEDOWN);
var _ = mini.MouseButton.Right != B.button;
if (_ == false)
    B.preventDefault();
Ej(A, "mousemove", this.move, this);
Ej(A, "mouseup", this.stop, this);
var $ = this;
setTimeout(function () {
    Ej(document, "contextmenu", $.contextmenu, $);
    if ($.context)
        Ej($.context, "contextmenu", $.contextmenu, $)
}, 1);
if (this.started)
    this.onStop(this, _)
}
};
mini.JSON = new (function () {
    var sb = [],
		useHasOwn = !!{}

		.hasOwnProperty,
		replaceString = function ($, A) {
		    var _ = m[A];
		    if (_)
		        return _;
		    _ = A.charCodeAt();
		    return "\\u00" + Math.floor(_ / 16).toString(16) + (_ % 16).toString(16)
		},
		doEncode = function ($) {
		    if ($ === null) {
		        sb[sb.length] = "null";
		        return
		    }
		    var A = typeof $;
		    if (A == "undefined") {
		        sb[sb.length] = "null";
		        return
		    } else if ($.push) {
		        sb[sb.length] = "[";
		        var D,
				_,
				C = $.length,
				E;
		        for (_ = 0; _ < C; _ += 1) {
		            E = $[_];
		            A = typeof E;
		            if (A == "undefined" || A == "function" || A == "unknown");
		            else {
		                if (D)
		                    sb[sb.length] = ",";
		                doEncode(E);
		                D = true
		            }
		        }
		        sb[sb.length] = "]";
		        return
		    } else if ($.getFullYear) {
		        var B;
		        sb[sb.length] = "\"";
		        sb[sb.length] = $.getFullYear();
		        sb[sb.length] = "-";
		        B = $.getMonth() + 1;
		        sb[sb.length] = B < 10 ? "0" + B : B;
		        sb[sb.length] = "-";
		        B = $.getDate();
		        sb[sb.length] = B < 10 ? "0" + B : B;
		        sb[sb.length] = "T";
		        B = $.getHours();
		        sb[sb.length] = B < 10 ? "0" + B : B;
		        sb[sb.length] = ":";
		        B = $.getMinutes();
		        sb[sb.length] = B < 10 ? "0" + B : B;
		        sb[sb.length] = ":";
		        B = $.getSeconds();
		        sb[sb.length] = B < 10 ? "0" + B : B;
		        sb[sb.length] = "\"";
		        return
		    } else if (A == "string") {
		        if (strReg1.test($)) {
		            sb[sb.length] = "\"";
		            sb[sb.length] = $.replace(strReg2, replaceString);
		            sb[sb.length] = "\"";
		            return
		        }
		        sb[sb.length] = "\"" + $ + "\"";
		        return
		    } else if (A == "number") {
		        sb[sb.length] = $;
		        return
		    } else if (A == "boolean") {
		        sb[sb.length] = String($);
		        return
		    } else {
		        sb[sb.length] = "{";
		        D,
				_,
				E;
		        for (_ in $)
		            if (!useHasOwn || $.hasOwnProperty(_)) {
		                E = $[_];
		                A = typeof E;
		                if (A == "undefined" || A == "function" || A == "unknown");
		                else {
		                    if (D)
		                        sb[sb.length] = ",";
		                    doEncode(_);
		                    sb[sb.length] = ":";
		                    doEncode(E);
		                    D = true
		                }
		            }
		    sb[sb.length] = "}";
		    return
		}
},
		m = {
		    "\b": "\\b",
		    "\t": "\\t",
		    "\n": "\\n",
		    "\f": "\\f",
		    "\r": "\\r",
		    "\"": "\\\"",
		    "\\": "\\\\"
		},
		strReg1 = /["\\\x00-\x1f]/,
		strReg2 = /([\x00-\x1f\\"])/g;
    this.encode = function () {
        var $;
        return function ($, _) {
            sb = [];
            doEncode($);
            return sb.join("")
        }
    }
		();
    this.decode = function () {
        var re = /[\"\'](\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2}):(\d{2})[\"\']/g;
        return function (json) {
            if (json === "" || json === null || json === undefined)
                return json;
            json = json.replace(re, "new Date($1,$2-1,$3,$4,$5,$6)");
            var json = json.replace(__js_dateRegEx, "$1new Date($2)"),
				s = eval("(" + json + ")");
            return s
        }
    }
		()
})();
__js_dateRegEx = new RegExp("(^|[^\\\\])\\\"\\\\/Date\\((-?[0-9]+)(?:[a-zA-Z]|(?:\\+|-)[0-9]{4})?\\)\\\\/\\\"", "g");
mini.encode = mini.JSON.encode;
mini.decode = mini.JSON.decode;
mini.clone = function ($) {
    if ($ === null || $ === undefined)
        return $;
    var B = mini.encode($),
	_ = mini.decode(B);
    function A(B) {
        for (var _ = 0, D = B.length; _ < D; _++) {
            var $ = B[_];
            delete $._state;
            delete $._id;
            delete $._pid;
            for (var C in $) {
                var E = $[C];
                if (E instanceof Array)
                    A(E)
            }
        }
    }
    A(_ instanceof Array ? _ : [_]);
    return _
};
var DAY_MS = 86400000, HOUR_MS = 3600000, MINUTE_MS = 60000;
mini.copyTo(mini, {
    clearTime: function ($) {
        if (!$)
            return null;
        return new Date($.getFullYear(), $.getMonth(), $.getDate())
    },
    maxTime: function ($) {
        if (!$)
            return null;
        return new Date($.getFullYear(), $.getMonth(), $.getDate(), 23, 59, 59)
    },
    cloneDate: function ($) {
        if (!$)
            return null;
        return new Date($.getTime())
    },
    addDate: function (A, $, _) {
        if (!_)
            _ = "D";
        A = new Date(A.getTime());
        switch (_.toUpperCase()) {
            case "Y":
                A.setFullYear(A.getFullYear() + $);
                break;
            case "MO":
                A.setMonth(A.getMonth() + $);
                break;
            case "D":
                A.setDate(A.getDate() + $);
                break;
            case "H":
                A.setHours(A.getHours() + $);
                break;
            case "M":
                A.setMinutes(A.getMinutes() + $);
                break;
            case "S":
                A.setSeconds(A.getSeconds() + $);
                break;
            case "MS":
                A.setMilliseconds(A.getMilliseconds() + $);
                break
        }
        return A
    },
    getWeek: function (D, $, _) {
        $ += 1;
        var E = Math.floor((14 - ($)) / 12),
		G = D + 4800 - E,
		A = ($) + (12 * E) - 3,
		C = _ + Math.floor(((153 * A) + 2) / 5) + (365 * G) + Math.floor(G / 4) - Math.floor(G / 100) + Math.floor(G / 400) - 32045,
		F = (C + 31741 - (C % 7)) % 146097 % 36524 % 1461,
		H = Math.floor(F / 1460),
		B = ((F - H) % 365) + H;
        NumberOfWeek = Math.floor(B / 7) + 1;
        return NumberOfWeek
    },
    getWeekStartDate: function (C, B) {
        if (!B)
            B = 0;
        if (B > 6 || B < 0)
            throw new Error("out of weekday");
        var A = C.getDay(),
		_ = B - A;
        if (A < B)
            _ -= 7;
        var $ = new Date(C.getFullYear(), C.getMonth(), C.getDate() + _);
        return $
    },
    getShortWeek: function (_) {
        var $ = this.dateInfo.daysShort;
        return $[_]
    },
    getLongWeek: function (_) {
        var $ = this.dateInfo.daysLong;
        return $[_]
    },
    getShortMonth: function ($) {
        var _ = this.dateInfo.monthsShort;
        return _[$]
    },
    getLongMonth: function ($) {
        var _ = this.dateInfo.monthsLong;
        return _[$]
    },
    dateInfo: {
        monthsLong: ["January", "Febraury", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
        monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
        daysLong: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
        daysShort: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
        quarterLong: ["Q1", "Q2", "Q3", "Q4"],
        quarterShort: ["Q1", "Q2", "Q3", "Q4"],
        halfYearLong: ["first half", "second half"],
        patterns: {
            "d": "M/d/yyyy",
            "D": "dddd,MMMM dd,yyyy",
            "f": "dddd,MMMM dd,yyyy H:mm tt",
            "F": "dddd,MMMM dd,yyyy H:mm:ss tt",
            "g": "M/d/yyyy H:mm tt",
            "G": "M/d/yyyy H:mm:ss tt",
            "m": "MMMM dd",
            "o": "yyyy-MM-ddTHH:mm:ss.fff",
            "s": "yyyy-MM-ddTHH:mm:ss",
            "t": "H:mm tt",
            "T": "H:mm:ss tt",
            "U": "dddd,MMMM dd,yyyy HH:mm:ss tt",
            "y": "MMM,yyyy"
        },
        tt: {
            "AM": "AM",
            "PM": "PM"
        },
        ten: {
            "Early": "Early",
            "Mid": "Mid",
            "Late": "Late"
        },
        today: "Today",
        clockType: 24
    }
});
Date[M9NB].getHalfYear = function () {
    if (!this.getMonth)
        return null;
    var $ = this.getMonth();
    if ($ < 6)
        return 0;
    return 1
};
Date[M9NB].getQuarter = function () {
    if (!this.getMonth)
        return null;
    var $ = this.getMonth();
    if ($ < 3)
        return 0;
    if ($ < 6)
        return 1;
    if ($ < 9)
        return 2;
    return 3
};
mini.formatDate = function (C, O, F) {
    if (!C || !C.getFullYear || isNaN(C))
        return "";
    var G = C.toString(),
	B = mini.dateInfo;
    if (!B)
        B = mini.dateInfo;
    if (typeof (B) !== "undefined") {
        var M = typeof (B.patterns[O]) !== "undefined" ? B.patterns[O] : O,
		J = C.getFullYear(),
		$ = C.getMonth(),
		_ = C.getDate();
        if (O == "yyyy-MM-dd") {
            $ = $ + 1 < 10 ? "0" + ($ + 1) : $ + 1;
            _ = _ < 10 ? "0" + _ : _;
            return J + "-" + $ + "-" + _
        }
        if (O == "MM/dd/yyyy") {
            $ = $ + 1 < 10 ? "0" + ($ + 1) : $ + 1;
            _ = _ < 10 ? "0" + _ : _;
            return $ + "/" + _ + "/" + J
        }
        G = M.replace(/yyyy/g, J);
        G = G.replace(/yy/g, (J + "").substring(2));
        var L = C.getHalfYear();
        G = G.replace(/hy/g, B.halfYearLong[L]);
        var I = C.getQuarter();
        G = G.replace(/Q/g, B.quarterLong[I]);
        G = G.replace(/q/g, B.quarterShort[I]);
        G = G.replace(/MMMM/g, B.monthsLong[$].escapeDateTimeTokens());
        G = G.replace(/MMM/g, B.monthsShort[$].escapeDateTimeTokens());
        G = G.replace(/MM/g, $ + 1 < 10 ? "0" + ($ + 1) : $ + 1);
        G = G.replace(/(\\)?M/g, function (A, _) {
            return _ ? A : $ + 1
        });
        var N = C.getDay();
        G = G.replace(/dddd/g, B.daysLong[N].escapeDateTimeTokens());
        G = G.replace(/ddd/g, B.daysShort[N].escapeDateTimeTokens());
        G = G.replace(/dd/g, _ < 10 ? "0" + _ : _);
        G = G.replace(/(\\)?d/g, function (A, $) {
            return $ ? A : _
        });
        var H = C.getHours(),
		A = H > 12 ? H - 12 : H;
        if (B.clockType == 12)
            if (H > 12)
                H -= 12;
    G = G.replace(/HH/g, H < 10 ? "0" + H : H);
    G = G.replace(/(\\)?H/g, function (_, $) {
        return $ ? _ : H
    });
    G = G.replace(/hh/g, A < 10 ? "0" + A : A);
    G = G.replace(/(\\)?h/g, function (_, $) {
        return $ ? _ : A
    });
    var D = C.getMinutes();
    G = G.replace(/mm/g, D < 10 ? "0" + D : D);
    G = G.replace(/(\\)?m/g, function (_, $) {
        return $ ? _ : D
    });
    var K = C.getSeconds();
    G = G.replace(/ss/g, K < 10 ? "0" + K : K);
    G = G.replace(/(\\)?s/g, function (_, $) {
        return $ ? _ : K
    });
    G = G.replace(/fff/g, C.getMilliseconds());
    G = G.replace(/tt/g, C.getHours() > 12 || C.getHours() == 0 ? B.tt["PM"] : B.tt["AM"]);
    var C = C.getDate(),
		E = "";
    if (C <= 10)
        E = B.ten["Early"];
    else if (C <= 20)
        E = B.ten["Mid"];
    else
        E = B.ten["Late"];
    G = G.replace(/ten/g, E)
}
return G.replace(/\\/g, "")
};
String[M9NB].escapeDateTimeTokens = function () {
    return this.replace(/([dMyHmsft])/g, "\\$1")
};
mini.fixDate = function ($, _) {
    if (+$)
        while ($.getDate() != _.getDate())
            $.setTime(+$ + ($ < _ ? 1 : -1) * HOUR_MS)
};
mini.parseDate = function (s, ignoreTimezone) {
    try {
        var d = eval(s);
        if (d && d.getFullYear)
            return d
    } catch (ex) { }

    if (typeof s == "object")
        return isNaN(s) ? null : s;
    if (typeof s == "number") {
        d = new Date(s * 1000);
        if (d.getTime() != s)
            return null;
        return isNaN(d) ? null : d
    }
    if (typeof s == "string") {
        if (s.match(/^\d+(\.\d+)?$/)) {
            d = new Date(parseFloat(s) * 1000);
            if (d.getTime() != s)
                return null;
            else
                return d
        }
        if (ignoreTimezone === undefined)
            ignoreTimezone = true;
        d = mini.parseISO8601(s, ignoreTimezone) || (s ? new Date(s) : null);
        return isNaN(d) ? null : d
    }
    return null
};
mini.parseISO8601 = function (D, $) {
    var _ = D.match(/^([0-9]{4})([-\/]([0-9]{1,2})([-\/]([0-9]{1,2})([T ]([0-9]{1,2}):([0-9]{1,2})(:([0-9]{1,2})(\.([0-9]+))?)?(Z|(([-+])([0-9]{2})(:?([0-9]{2}))?))?)?)?)?$/);
    if (!_) {
        _ = D.match(/^([0-9]{4})[-\/]([0-9]{2})[-\/]([0-9]{2})[T ]([0-9]{1,2})/);
        if (_) {
            var A = new Date(_[1], _[2] - 1, _[3], _[4]);
            return A
        }
        _ = D.match(/^([0-9]{2})-([0-9]{2})-([0-9]{4})$/);
        if (!_)
            return null;
        else {
            A = new Date(_[3], _[1] - 1, _[2]);
            return A
        }
    }
    A = new Date(_[1], 0, 1);
    if ($ || !_[14]) {
        var C = new Date(_[1], 0, 1, 9, 0);
        if (_[3]) {
            A.setMonth(_[3] - 1);
            C.setMonth(_[3] - 1)
        }
        if (_[5]) {
            A.setDate(_[5]);
            C.setDate(_[5])
        }
        mini.fixDate(A, C);
        if (_[7])
            A.setHours(_[7]);
        if (_[8])
            A.setMinutes(_[8]);
        if (_[10])
            A.setSeconds(_[10]);
        if (_[12])
            A.setMilliseconds(Number("0." + _[12]) * 1000);
        mini.fixDate(A, C)
    } else {
        A.setUTCFullYear(_[1], _[3] ? _[3] - 1 : 0, _[5] || 1);
        A.setUTCHours(_[7] || 0, _[8] || 0, _[10] || 0, _[12] ? Number("0." + _[12]) * 1000 : 0);
        var B = Number(_[16]) * 60 + (_[18] ? Number(_[18]) : 0);
        B *= _[15] == "-" ? 1 : -1;
        A = new Date(+A + (B * 60 * 1000))
    }
    return A
};
mini.parseTime = function (E, F) {
    if (!E)
        return null;
    var B = parseInt(E);
    if (B == E && F) {
        $ = new Date(0);
        if (F[0] == "H")
            $.setHours(B);
        else if (F[0] == "m")
            $.setMinutes(B);
        else if (F[0] == "s")
            $.setSeconds(B);
        return $
    }
    var $ = mini.parseDate(E);
    if (!$) {
        var D = E.split(":"),
		_ = parseInt(parseFloat(D[0])),
		C = parseInt(parseFloat(D[1])),
		A = parseInt(parseFloat(D[2]));
        if (!isNaN(_) && !isNaN(C) && !isNaN(A)) {
            $ = new Date(0);
            $.setHours(_);
            $.setMinutes(C);
            $.setSeconds(A)
        }
        if (!isNaN(_) && (F == "H" || F == "HH")) {
            $ = new Date(0);
            $.setHours(_)
        } else if (!isNaN(_) && !isNaN(C) && (F == "H:mm" || F == "HH:mm")) {
            $ = new Date(0);
            $.setHours(_);
            $.setMinutes(C)
        } else if (!isNaN(_) && !isNaN(C) && F == "mm:ss") {
            $ = new Date(0);
            $.setMinutes(_);
            $.setSeconds(C)
        }
    }
    return $
};
mini.dateInfo = {
    monthsLong: ["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"],
    monthsShort: ["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"],
    daysLong: ["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"],
    daysShort: ["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"],
    quarterLong: ["\u4e00\u5b63\u5ea6", "\u4e8c\u5b63\u5ea6", "\u4e09\u5b63\u5ea6", "\u56db\u5b63\u5ea6"],
    quarterShort: ["Q1", "Q2", "Q2", "Q4"],
    halfYearLong: ["\u4e0a\u534a\u5e74", "\u4e0b\u534a\u5e74"],
    patterns: {
        "d": "yyyy-M-d",
        "D": "yyyy\u5e74M\u6708d\u65e5",
        "f": "yyyy\u5e74M\u6708d\u65e5 H:mm",
        "F": "yyyy\u5e74M\u6708d\u65e5 H:mm:ss",
        "g": "yyyy-M-d H:mm",
        "G": "yyyy-M-d H:mm:ss",
        "m": "MMMd\u65e5",
        "o": "yyyy-MM-ddTHH:mm:ss.fff",
        "s": "yyyy-MM-ddTHH:mm:ss",
        "t": "H:mm",
        "T": "H:mm:ss",
        "U": "yyyy\u5e74M\u6708d\u65e5 HH:mm:ss",
        "y": "yyyy\u5e74MM\u6708"
    },
    tt: {
        "AM": "\u4e0a\u5348",
        "PM": "\u4e0b\u5348"
    },
    ten: {
        "Early": "\u4e0a\u65ec",
        "Mid": "\u4e2d\u65ec",
        "Late": "\u4e0b\u65ec"
    },
    today: "\u4eca\u5929",
    clockType: 24
};
X4g = function ($) {
    if (typeof $ == "string") {
        if ($.charAt(0) == "#")
            $ = $.substr(1);
        return document.getElementById($)
    } else
        return $
};
Mjm = function ($, _) {
    $ = X4g($);
    if (!$)
        return;
    if (!$.className)
        return;
    var A = $.className.split(" ");
    return A.indexOf(_) != -1
};
E$_ = function ($, _) {
    if (!_)
        return;
    if (Mjm($, _) == false)
        jQuery($)[$wd](_)
};
ZVS = function ($, _) {
    if (!_)
        return;
    jQuery($)[Ewq](_)
};
BRb = function ($) {
    $ = X4g($);
    var _ = jQuery($);
    return {
        top: parseInt(_.css("margin-top"), 10) || 0,
        left: parseInt(_.css("margin-left"), 10) || 0,
        bottom: parseInt(_.css("margin-bottom"), 10) || 0,
        right: parseInt(_.css("margin-right"), 10) || 0
    }
};
_t = function ($) {
    $ = X4g($);
    var _ = jQuery($);
    return {
        top: parseInt(_.css("border-top-width"), 10) || 0,
        left: parseInt(_.css("border-left-width"), 10) || 0,
        bottom: parseInt(_.css("border-bottom-width"), 10) || 0,
        right: parseInt(_.css("border-right-width"), 10) || 0
    }
};
PvB = function ($) {
    $ = X4g($);
    var _ = jQuery($);
    return {
        top: parseInt(_.css("padding-top"), 10) || 0,
        left: parseInt(_.css("padding-left"), 10) || 0,
        bottom: parseInt(_.css("padding-bottom"), 10) || 0,
        right: parseInt(_.css("padding-right"), 10) || 0
    }
};
X9c = function (_, $) {
    _ = X4g(_);
    $ = parseInt($);
    if (isNaN($) || !_)
        return;
    if (jQuery.boxModel) {
        var A = PvB(_),
		B = _t(_);
        $ = $ - A.left - A.right - B.left - B.right
    }
    if ($ < 0)
        $ = 0;
    _.style.width = $ + "px"
};
G2Mf = function (_, $) {
    _ = X4g(_);
    $ = parseInt($);
    if (isNaN($) || !_)
        return;
    if (jQuery.boxModel) {
        var A = PvB(_),
		B = _t(_);
        $ = $ - A.top - A.bottom - B.top - B.bottom
    }
    if ($ < 0)
        $ = 0;
    _.style.height = $ + "px"
};
EvDb = function ($, _) {
    $ = X4g($);
    if ($.style.display == "none" || $.type == "text/javascript")
        return 0;
    return _ ? jQuery($).width() : jQuery($).outerWidth()
};
Cop = function ($, _) {
    $ = X4g($);
    if ($.style.display == "none" || $.type == "text/javascript")
        return 0;
    return _ ? jQuery($).height() : jQuery($).outerHeight()
};
X7y = function (A, C, B, $, _) {
    if (B === undefined) {
        B = C.y;
        $ = C.width;
        _ = C.height;
        C = C.x
    }
    mini[_20](A, C, B);
    X9c(A, $);
    G2Mf(A, _)
};
L05 = function (A) {
    var $ = mini.getXY(A),
	_ = {
	    x: $[0],
	    y: $[1],
	    width: EvDb(A),
	    height: Cop(A)
	};
    _.left = _.x;
    _.top = _.y;
    _.right = _.x + _.width;
    _.bottom = _.y + _.height;
    return _
};
DaZ = function (A, B) {
    A = X4g(A);
    if (!A || typeof B != "string")
        return;
    var F = jQuery(A),
	_ = B.toLowerCase().split(";");
    for (var $ = 0, C = _.length; $ < C; $++) {
        var E = _[$],
		D = E.split(":");
        if (D.length == 2)
            F.css(D[0].trim(), D[1].trim())
    }
};
CU = function () {
    var $ = document.defaultView;
    return new Function("el", "style", ["style.indexOf('-')>-1 && (style=style.replace(/-(\\w)/g,function(m,a){return a.toUpperCase()}));", "style=='float' && (style='", $ ? "cssFloat" : "styleFloat", "');return el.style[style] || ", $ ? "window.getComputedStyle(el,null)[style]" : "el.currentStyle[style]", " || null;"].join(""))
}
();
Uqe = function (A, $) {
    var _ = false;
    A = X4g(A);
    $ = X4g($);
    if (A === $)
        return true;
    if (A && $)
        if (A.contains) {
            try {
                return A.contains($)
            } catch (B) {
                return false
            }
        } else if (A.compareDocumentPosition)
            return !!(A.compareDocumentPosition($) & 16);
        else
            while ($ = $.parentNode)
                _ = $ == A || _;
return _
};
$Rz = function (B, A, $) {
    B = X4g(B);
    var C = document.body,
	_ = 0,
	D;
    $ = $ || 50;
    if (typeof $ != "number") {
        D = X4g($);
        $ = 10
    }
    while (B && B.nodeType == 1 && _ < $ && B != C && B != D) {
        if (Mjm(B, A))
            return B;
        _++;
        B = B.parentNode
    }
    return null
};
mini.copyTo(mini, {
    byId: X4g,
    hasClass: Mjm,
    addClass: E$_,
    removeClass: ZVS,
    getMargins: BRb,
    getBorders: _t,
    getPaddings: PvB,
    setWidth: X9c,
    setHeight: G2Mf,
    getWidth: EvDb,
    getHeight: Cop,
    setBox: X7y,
    getBox: L05,
    setStyle: DaZ,
    getStyle: CU,
    repaint: function ($) {
        if (!$)
            $ = document.body;
        E$_($, "mini-repaint");
        setTimeout(function () {
            ZVS($, "mini-repaint")
        }, 1)
    },
    getSize: function ($, _) {
        return {
            width: EvDb($, _),
            height: Cop($, _)
        }
    },
    setSize: function (A, $, _) {
        X9c(A, $);
        G2Mf(A, _)
    },
    setX: function (_, B) {
        B = parseInt(B);
        var $ = jQuery(_).offset(),
		A = parseInt($.top);
        if (A === undefined)
            A = $[1];
        mini[_20](_, B, A)
    },
    setY: function (_, A) {
        A = parseInt(A);
        var $ = jQuery(_).offset(),
		B = parseInt($.left);
        if (B === undefined)
            B = $[0];
        mini[_20](_, B, A)
    },
    setXY: function (_, B, A) {
        var $ = {
            left: parseInt(B),
            top: parseInt(A)
        };
        jQuery(_).offset($);
        jQuery(_).offset($)
    },
    getXY: function (_) {
        var $ = jQuery(_).offset();
        return [parseInt($.left), parseInt($.top)]
    },
    getViewportBox: function () {
        var $ = jQuery(window).width(),
		_ = jQuery(window).height(),
		B = jQuery(document).scrollLeft(),
		A = jQuery(document.body).scrollTop();
        if (document.documentElement)
            A = document.documentElement.scrollTop;
        return {
            x: B,
            y: A,
            width: $,
            height: _,
            right: B + $,
            bottom: A + _
        }
    },
    getChildNodes: function (A, C) {
        A = X4g(A);
        if (!A)
            return;
        var E = A.childNodes,
		B = [];
        for (var $ = 0, D = E.length; $ < D; $++) {
            var _ = E[$];
            if (_.nodeType == 1 || C === true)
                B.push(_)
        }
        return B
    },
    removeChilds: function (B, _) {
        B = X4g(B);
        if (!B)
            return;
        var C = mini[SY0](B, true);
        for (var $ = 0, D = C.length; $ < D; $++) {
            var A = C[$];
            if (_ && A == _);
            else
                B.removeChild(C[$])
        }
    },
    isAncestor: Uqe,
    findParent: $Rz,
    findChild: function (_, A) {
        _ = X4g(_);
        var B = _.getElementsByTagName("*");
        for (var $ = 0, C = B.length; $ < C; $++) {
            var _ = B[$];
            if (Mjm(_, A))
                return _
        }
    },
    isAncestor: function (A, $) {
        var _ = false;
        A = X4g(A);
        $ = X4g($);
        if (A === $)
            return true;
        if (A && $)
            if (A.contains) {
                try {
                    return A.contains($)
                } catch (B) {
                    return false
                }
            } else if (A.compareDocumentPosition)
                return !!(A.compareDocumentPosition($) & 16);
            else
                while ($ = $.parentNode)
                    _ = $ == A || _;
return _
},
getOffsetsTo: function (_, A) {
    var $ = this.getXY(_),
		B = this.getXY(A);
    return [$[0] - B[0], $[1] - B[1]]
},
scrollIntoView: function (I, H, F) {
    var B = X4g(H) || document.body,
		$ = this.getOffsetsTo(I, B),
		C = $[0] + B.scrollLeft,
		J = $[1] + B.scrollTop,
		D = J + I.offsetHeight,
		A = C + I.offsetWidth,
		G = B.clientHeight,
		K = parseInt(B.scrollTop, 10),
		_ = parseInt(B.scrollLeft, 10),
		L = K + G,
		E = _ + B.clientWidth;
    if (I.offsetHeight > G || J < K)
        B.scrollTop = J;
    else if (D > L)
        B.scrollTop = D - G;
    B.scrollTop = B.scrollTop;
    if (F !== false) {
        if (I.offsetWidth > B.clientWidth || C < _)
            B.scrollLeft = C;
        else if (A > E)
            B.scrollLeft = A - B.clientWidth;
        B.scrollLeft = B.scrollLeft
    }
    return this
},
setOpacity: function (_, $) {
    jQuery(_).css({
        "opacity": $
    })
},
selectable: function (_, $) {
    _ = X4g(_);
    if (!!$) {
        jQuery(_)[Ewq]("mini-unselectable");
        if (isIE)
            _.unselectable = "off";
        else {
            _.style.MozUserSelect = "";
            _.style.KhtmlUserSelect = "";
            _.style.UserSelect = ""
        }
    } else {
        jQuery(_)[$wd]("mini-unselectable");
        if (isIE)
            _.unselectable = "on";
        else {
            _.style.MozUserSelect = "none";
            _.style.UserSelect = "none";
            _.style.KhtmlUserSelect = "none"
        }
    }
},
selectRange: function (B, A, _) {
    if (B.createTextRange) {
        var $ = B.createTextRange();
        $.moveStart("character", A);
        $.moveEnd("character", _ - B.value.length);
        $[Zk]()
    } else if (B.setSelectionRange)
        B.setSelectionRange(A, _);
    try {
        B.focus()
    } catch (C) { }

},
getSelectRange: function (A) {
    A = X4g(A);
    if (!A)
        return;
    try {
        A.focus()
    } catch (C) { }

    var $ = 0,
		B = 0;
    if (A.createTextRange) {
        var _ = document.selection.createRange().duplicate();
        _.moveEnd("character", A.value.length);
        if (_.text === "")
            $ = A.value.length;
        else
            $ = A.value.lastIndexOf(_.text);
        _ = document.selection.createRange().duplicate();
        _.moveStart("character", -A.value.length);
        B = _.text.length
    } else {
        $ = A.selectionStart;
        B = A.selectionEnd
    }
    return [$, B]
}
});
(function () {
    var $ = {
        tabindex: "tabIndex",
        readonly: "readOnly",
        "for": "htmlFor",
        "class": "className",
        maxlength: "maxLength",
        cellspacing: "cellSpacing",
        cellpadding: "cellPadding",
        rowspan: "rowSpan",
        colspan: "colSpan",
        usemap: "useMap",
        frameborder: "frameBorder",
        contenteditable: "contentEditable"
    },
	_ = document.createElement("div");
    _.setAttribute("class", "t");
    var A = _.className === "t";
    mini.setAttr = function (B, C, _) {
        B.setAttribute(A ? C : ($[C] || C), _)
    };
    mini.getAttr = function (B, C) {
        if (C == "value" && (isIE6 || isIE7)) {
            var _ = B.attributes[C];
            return _ ? _.value : null
        }
        var D = B.getAttribute(A ? C : ($[C] || C));
        if (typeof D == "function")
            D = B.attributes[C].value;
        return D
    }
})();
Pv3 = function (_, $, C, A) {
    var B = "on" + $.toLowerCase();
    _[B] = function (_) {
        _ = _ || window.event;
        _.target = _.target || _.srcElement;
        if (!_.preventDefault)
            _.preventDefault = function () {
                var $ = this;
                if ($.preventDefault)
                    $.preventDefault();
                else if (window.event)
                    window.event.returnValue = false
            };
        if (!_.stopPropogation)
            _.stopPropogation = function () {
                var $ = this;
                if ($.stopPropagation)
                    $.stopPropagation();
                else if (window.event)
                    window.event.cancelBubble = true
            };
        var $ = C[R05g](A, _);
        if ($ === false)
            return false
    }
};
Boy = function (_, $, D, A) {
    _ = X4g(_);
    A = A || _;
    if (!_ || !$ || !D || !A)
        return false;
    var B = mini[IT7A](_, $, D, A);
    if (B)
        return false;
    var C = mini.createDelegate(D, A);
    mini.listeners.push([_, $, D, A, C]);
    if (jQuery.browser.mozilla && $ == "mousewheel")
        $ = "DOMMouseScroll";
    jQuery(_).bind($, C)
};
Ej = function (_, $, C, A) {
    _ = X4g(_);
    A = A || _;
    if (!_ || !$ || !C || !A)
        return false;
    var B = mini[IT7A](_, $, C, A);
    if (!B)
        return false;
    mini.listeners.remove(B);
    if (jQuery.browser.mozilla && $ == "mousewheel")
        $ = "DOMMouseScroll";
    jQuery(_).unbind($, B[4])
};
mini.copyTo(mini, {
    listeners: [],
    on: Boy,
    un: Ej,
    findListener: function (A, _, F, B) {
        A = X4g(A);
        B = B || A;
        if (!A || !_ || !F || !B)
            return false;
        var D = mini.listeners;
        for (var $ = 0, E = D.length; $ < E; $++) {
            var C = D[$];
            if (C[0] == A && C[1] == _ && C[2] == F && C[3] == B)
                return C
        }
    },
    clearEvent: function (A, _) {
        A = X4g(A);
        if (!A)
            return false;
        var C = mini.listeners;
        for (var $ = C.length - 1; $ >= 0; $--) {
            var B = C[$];
            if (B[0] == A)
                if (!_ || _ == B[1])
                    Ej(A, B[1], B[2], B[3])
    }
}
});
mini.__windowResizes = [];
mini.onWindowResize = function (_, $) {
    mini.__windowResizes.push([_, $])
};
Boy(window, "resize", function (C) {
    var _ = mini.__windowResizes;
    for (var $ = 0, B = _.length; $ < B; $++) {
        var A = _[$];
        A[0][R05g](A[1], C)
    }
});
mini.copyTo(Array.prototype, {
    add: Array[M9NB].enqueue = function ($) {
        this[this.length] = $;
        return this
    },
    getRange: function (_, A) {
        var B = [];
        for (var $ = _; $ <= A; $++)
            B[B.length] = this[$];
        return B
    },
    addRange: function (A) {
        for (var $ = 0, _ = A.length; $ < _; $++)
            this[this.length] = A[$];
        return this
    },
    clear: function () {
        this.length = 0;
        return this
    },
    clone: function () {
        if (this.length === 1)
            return [this[0]];
        else
            return Array.apply(null, this)
    },
    contains: function ($) {
        return (this.indexOf($) >= 0)
    },
    indexOf: function (_, B) {
        var $ = this.length;
        for (var A = (B < 0) ? Math.max(0, $ + B) : B || 0; A < $; A++)
            if (this[A] === _)
                return A;
    return -1
},
dequeue: function () {
    return this.shift()
},
insert: function (_, $) {
    this.splice(_, 0, $);
    return this
},
insertRange: function (_, B) {
    for (var A = B.length - 1; A >= 0; A--) {
        var $ = B[A];
        this.splice(_, 0, $)
    }
    return this
},
remove: function (_) {
    var $ = this.indexOf(_);
    if ($ >= 0)
        this.splice($, 1);
    return ($ >= 0)
},
removeAt: function ($) {
    var _ = this[$];
    this.splice($, 1);
    return _
},
removeRange: function (_) {
    _ = _.clone();
    for (var $ = 0, A = _.length; $ < A; $++)
        this.remove(_[$])
}
});
mini.Keyboard = {
    Left: 37,
    Top: 38,
    Right: 39,
    Bottom: 40,
    PageUp: 33,
    PageDown: 34,
    End: 35,
    Home: 36,
    Enter: 13,
    ESC: 27,
    Space: 32,
    Tab: 9,
    Del: 46,
    F1: 112,
    F2: 113,
    F3: 114,
    F4: 115,
    F5: 116,
    F6: 117,
    F7: 118,
    F8: 119,
    F9: 120,
    F10: 121,
    F11: 122,
    F12: 123
};
var ua = navigator.userAgent.toLowerCase(), check = function ($) {
    return $.test(ua)
}, DOC = document, isStrict = DOC.compatMode == "CSS1Compat", isOpera = Object[M9NB].toString[R05g](window.opera) == "[object Opera]", isChrome = check(/chrome/), isWebKit = check(/webkit/), isSafari = !isChrome && check(/safari/), isSafari2 = isSafari && check(/applewebkit\/4/), isSafari3 = isSafari && check(/version\/3/), isSafari4 = isSafari && check(/version\/4/), isIE = !!window.attachEvent && !isOpera, isIE7 = isIE && check(/msie 7/), isIE8 = isIE && check(/msie 8/), isIE9 = isIE && check(/msie 9/), isIE10 = isIE && document.documentMode == 10, isIE6 = isIE && !isIE7 && !isIE8 && !isIE9 && !isIE10, isFirefox = navigator.userAgent.indexOf("Firefox") > 0, isGecko = !isWebKit && check(/gecko/), isGecko2 = isGecko && check(/rv:1\.8/), isGecko3 = isGecko && check(/rv:1\.9/), isBorderBox = isIE && !isStrict, isWindows = check(/windows|win32/), isMac = check(/macintosh|mac os x/), isAir = check(/adobeair/), isLinux = check(/linux/), isSecure = /^https/i.test(window.location.protocol);
if (isIE6) {
    try {
        DOC.execCommand("BackgroundImageCache", false, true)
    } catch (e) { }

}
mini.isIE = isIE;
mini.isIE6 = isIE6;
mini.isIE7 = isIE7;
mini.isIE8 = isIE8;
mini.isIE9 = isIE9;
mini.isFireFox = jQuery.browser.mozilla;
mini.isOpera = jQuery.browser.opera;
mini.isSafari = jQuery.browser.safari;
mini.noBorderBox = false;
if (jQuery.boxModel == false && isIE && isIE9 == false)
    mini.noBorderBox = true;
mini.MouseButton = {
    Left: 0,
    Middle: 1,
    Right: 2
};
if (isIE && !isIE9)
    mini.MouseButton = {
        Left: 1,
        Middle: 4,
        Right: 2
    };
mini._MaskID = 1;
mini._MaskObjects = {};
mini.mask = function (C) {
    var _ = X4g(C);
    if (mini.isElement(_))
        C = {
            el: _
        };
    else if (typeof C == "string")
        C = {
            html: C
        };
    C = mini.copyTo({
        html: "",
        cls: "",
        style: "",
        backStyle: "background:#ccc"
    }, C);
    C.el = X4g(C.el);
    if (!C.el)
        C.el = document.body;
    _ = C.el;
    mini["unmask"](C.el);
    _._maskid = mini._MaskID++;
    mini._MaskObjects[_._maskid] = C;
    var $ = mini.append(_, "<div class=\"mini-mask\">" + "<div class=\"mini-mask-background\" style=\"" + C.backStyle + "\"></div>" + "<div class=\"mini-mask-msg " + C.cls + "\" style=\"" + C.style + "\">" + C.html + "</div>" + "</div>");
    C.maskEl = $;
    if (!mini.isNull(C.opacity))
        mini.setOpacity($.firstChild, C.opacity);
    function A() {
        B.style.display = "block";
        var $ = mini.getSize(B);
        B.style.marginLeft = -$.width / 2 + "px";
        B.style.marginTop = -$.height / 2 + "px"
    }
    var B = $.lastChild;
    B.style.display = "none";
    setTimeout(function () {
        A()
    }, 0)
};
mini["unmask"] = function (_) {
    _ = X4g(_);
    if (!_)
        _ = document.body;
    var A = mini._MaskObjects[_._maskid];
    if (!A)
        return;
    delete mini._MaskObjects[_._maskid];
    var $ = A.maskEl;
    A.maskEl = null;
    if ($ && $.parentNode)
        $.parentNode.removeChild($)
};
mini.Cookie = {
    get: function (D) {
        var A = document.cookie.split("; "),
		B = null;
        for (var $ = 0; $ < A.length; $++) {
            var _ = A[$].split("=");
            if (D == _[0])
                B = _
        }
        if (B) {
            var C = B[1];
            if (C === undefined)
                return C;
            return unescape(C)
        }
        return null
    },
    set: function (C, $, B, A) {
        var _ = new Date();
        if (B != null)
            _ = new Date(_.getTime() + (B * 1000 * 3600 * 24));
        document.cookie = C + "=" + escape($) + ((B == null) ? "" : ("; expires=" + _.toGMTString())) + ";path=/" + (A ? "; domain=" + A : "")
    },
    del: function (_, $) {
        this.set(_, null, -100, $)
    }
};
mini.copyTo(mini, {
    treeToArray: function (C, I, J, A, $) {
        if (!I)
            I = "children";
        var F = [];
        for (var H = 0, D = C.length; H < D; H++) {
            var B = C[H];
            F[F.length] = B;
            if (A)
                B[A] = $;
            var _ = B[I];
            if (_ && _.length > 0) {
                var E = B[J],
				G = this[Q$](_, I, J, A, E);
                F.addRange(G)
            }
        }
        return F
    },
    arrayToTree: function (C, A, H, B) {
        if (!A)
            A = "children";
        H = H || "_id";
        B = B || "_pid";
        var G = [],
		F = {};
        for (var _ = 0, E = C.length; _ < E; _++) {
            var $ = C[_],
			I = $[H];
            if (I !== null && I !== undefined)
                F[I] = $;
            delete $[A]
        }
        for (_ = 0, E = C.length; _ < E; _++) {
            var $ = C[_],
			D = F[$[B]];
            if (!D) {
                G.push($);
                continue
            }
            if (!D[A])
                D[A] = [];
            D[A].push($)
        }
        return G
    }
});
function UUID() {
    var A = [],
	_ = "0123456789ABCDEF".split("");
    for (var $ = 0; $ < 36; $++)
        A[$] = Math.floor(Math.random() * 16);
    A[14] = 4;
    A[19] = (A[19] & 3) | 8;
    for ($ = 0; $ < 36; $++)
        A[$] = _[A[$]];
    A[8] = A[13] = A[18] = A[23] = "-";
    return A.join("")
}
String.format = function (_) {
    var $ = Array[M9NB].slice[R05g](arguments, 1);
    _ = _ || "";
    return _.replace(/\{(\d+)\}/g, function (A, _) {
        return $[_]
    })
};
String[M9NB].trim = function () {
    var $ = /^\s+|\s+$/g;
    return function () {
        return this.replace($, "")
    }
}
();
mini.copyTo(mini, {
    measureText: function (B, _, C) {
        if (!this.measureEl)
            this.measureEl = mini.append(document.body, "<div></div>");
        this.measureEl.style.cssText = "position:absolute;left:-1000px;top:-1000px;visibility:hidden;";
        if (typeof B == "string")
            this.measureEl.className = B;
        else {
            this.measureEl.className = "";
            var G = jQuery(B),
			A = jQuery(this.measureEl),
			F = ["font-size", "font-style", "font-weight", "font-family", "line-height", "text-transform", "letter-spacing"];
            for (var $ = 0, E = F.length; $ < E; $++) {
                var D = F[$];
                A.css(D, G.css(D))
            }
        }
        if (C)
            DaZ(this.measureEl, C);
        this.measureEl.innerHTML = _;
        return mini.getSize(this.measureEl)
    }
});
jQuery(function () {
    var $ = new Date();
    mini.isReady = true;
    mini.parse();
    _8nb();
    if ((CU(document.body, "overflow") == "hidden" || CU(document.documentElement, "overflow") == "hidden") && (isIE6 || isIE7)) {
        jQuery(document.body).css("overflow", "visible");
        jQuery(document.documentElement).css("overflow", "visible")
    }
    mini.__LastWindowWidth = document.documentElement.clientWidth;
    mini.__LastWindowHeight = document.documentElement.clientHeight
});
mini_onload = function ($) {
    mini.layout(null, false);
    Boy(window, "resize", mini_onresize)
};
Boy(window, "load", mini_onload);
mini.__LastWindowWidth = document.documentElement.clientWidth;
mini.__LastWindowHeight = document.documentElement.clientHeight;
mini.doWindowResizeTimer = null;
mini.allowLayout = true;
mini_onresize = function (A) {
    if (mini.doWindowResizeTimer)
        clearTimeout(mini.doWindowResizeTimer);
    if (AGs == false || mini.allowLayout == false)
        return;
    if (typeof Ext != "undefined")
        mini.doWindowResizeTimer = setTimeout(function () {
            var _ = document.documentElement.clientWidth,
				$ = document.documentElement.clientHeight;
            if (mini.__LastWindowWidth == _ && mini.__LastWindowHeight == $);
            else {
                mini.__LastWindowWidth = _;
                mini.__LastWindowHeight = $;
                mini.layout(null, false)
            }
            mini.doWindowResizeTimer = null
        }, 300);
    else {
        var $ = 100;
        try {
            if (parent && parent != window && parent.mini)
                $ = 0
        } catch (_) { }

        mini.doWindowResizeTimer = setTimeout(function () {
            var _ = document.documentElement.clientWidth,
				$ = document.documentElement.clientHeight;
            if (mini.__LastWindowWidth == _ && mini.__LastWindowHeight == $);
            else {
                mini.__LastWindowWidth = _;
                mini.__LastWindowHeight = $;
                mini.layout(null, false)
            }
            mini.doWindowResizeTimer = null
        }, $)
    }
};
mini[RPC] = function (_, A) {
    var $ = A || document.body;
    while (1) {
        if (_ == null || !_.style)
            return false;
        if (_ && _.style && _.style.display == "none")
            return false;
        if (_ == $)
            return true;
        _ = _.parentNode
    }
    return true
};
mini.isWindowDisplay = function () {
    try {
        var _ = window.parent,
		E = _ != window;
        if (E) {
            var C = _.document.getElementsByTagName("iframe"),
			H = _.document.getElementsByTagName("frame"),
			G = [];
            for (var $ = 0, D = C.length; $ < D; $++)
                G.push(C[$]);
            for ($ = 0, D = H.length; $ < D; $++)
                G.push(H[$]);
            var B = null;
            for ($ = 0, D = G.length; $ < D; $++) {
                var A = G[$];
                if (A.contentWindow == window) {
                    B = A;
                    break
                }
            }
            if (!B)
                return false;
            return mini[RPC](B, _.document.body)
        } else
            return true
    } catch (F) {
        return true
    }
};
AGs = mini.isWindowDisplay();
mini.layoutIFrames = function ($) {
    if (!$)
        $ = document.body;
    var _ = $.getElementsByTagName("iframe");
    setTimeout(function () {
        for (var A = 0, C = _.length; A < C; A++) {
            var B = _[A];
            try {
                if (mini[RPC](B) && Uqe($, B)) {
                    if (B.contentWindow.mini)
                        if (B.contentWindow.AGs == false) {
                            B.contentWindow.AGs = B.contentWindow.mini.isWindowDisplay();
                            B.contentWindow.mini.layout()
                        } else
                            B.contentWindow.mini.layout(null, false);
                B.contentWindow.mini.layoutIFrames()
            }
        } catch (D) { }

    }
}, 30)
};
$.ajaxSetup({
    cache: false
});
if (isIE)
    setInterval(function () {
        CollectGarbage()
    }, 1000);
mini_unload = function (F) {
    var E = document.body.getElementsByTagName("iframe");
    if (E.length > 0) {
        var D = [];
        for (var $ = 0, C = E.length; $ < C; $++)
            D.push(E[$]);
        for ($ = 0, C = D.length; $ < C; $++) {
            try {
                var B = D[$];
                B.src = "";
                if (B.parentNode)
                    B.parentNode.removeChild(B)
            } catch (F) { }

        }
    }
    var A = mini.getComponents();
    for ($ = 0, C = A.length; $ < C; $++) {
        var _ = A[$];
        _[Yr3P](false)
    }
    A.length = 0;
    A = null;
    Ej(window, "unload", mini_unload);
    Ej(window, "load", mini_onload);
    Ej(window, "resize", mini_onresize);
    mini.components = {};
    mini.classes = {};
    mini.uiClasses = {};
    try {
        CollectGarbage()
    } catch (F) { }

};
Boy(window, "unload", mini_unload);
function __OnIFrameMouseDown() {
    jQuery(document).trigger("mousedown")
}
function __BindIFrames() {
    var C = document.getElementsByTagName("iframe");
    for (var $ = 0, A = C.length; $ < A; $++) {
        var _ = C[$];
        try {
            if (_.contentWindow)
                _.contentWindow.document.onmousedown = __OnIFrameMouseDown
        } catch (B) { }

    }
}
setInterval(function () {
    __BindIFrames()
}, 1500);
mini.zIndex = 1000;
mini.getMaxZIndex = function () {
    return mini.zIndex++
};
X34 = function () {
    this._bindFields = [];
    this._bindForms = [];
    X34[Ov][FaWb][R05g](this)
};
ZPOi(X34, ZaZ, {
    bindField: function (A, D, C, B, $) {
        A = mini.get(A);
        D = mini.get(D);
        if (!A || !D || !C)
            return;
        var _ = {
            control: A,
            source: D,
            field: C,
            convert: $,
            mode: B
        };
        this._bindFields.push(_);
        D.on("currentchanged", this.EYb, this);
        A.on("valuechanged", this.Wji, this)
    },
    bindForm: function (B, F, D, A) {
        B = X4g(B);
        F = mini.get(F);
        if (!B || !F)
            return;
        var B = new mini.Form(B),
		$ = B.getFields();
        for (var _ = 0, E = $.length; _ < E; _++) {
            var C = $[_];
            this.bindField(C, F, C.getName(), D, A)
        }
    },
    EYb: function (H) {
        if (this._doSetting)
            return;
        this._doSetting = true;
        var G = H.sender,
		_ = H.record;
        for (var $ = 0, F = this._bindFields.length; $ < F; $++) {
            var B = this._bindFields[$];
            if (B.source != G)
                continue;
            var C = B.control,
			D = B.field;
            if (C[XlA])
                if (_) {
                    var A = _[D];
                    C[XlA](A)
                } else
                    C[XlA]("");
        if (C[T0B] && C.textName)
            if (_)
                C[T0B](_[C.textName]);
            else
                C[T0B]("")
}
var E = this;
setTimeout(function () {
    E._doSetting = false
}, 10)
},
Wji: function (H) {
    if (this._doSetting)
        return;
    this._doSetting = true;
    var D = H.sender,
		_ = D.getValue();
    for (var $ = 0, G = this._bindFields.length; $ < G; $++) {
        var C = this._bindFields[$];
        if (C.control != D || C.mode === false)
            continue;
        var F = C.source,
			B = F.getCurrent();
        if (!B)
            continue;
        var A = {};
        A[C.field] = _;
        if (D.getText && D.textName)
            A[D.textName] = D.getText();
        F[FD](B, A)
    }
    var E = this;
    setTimeout(function () {
        E._doSetting = false
    }, 10)
}
});
H58(X34, "databinding");
$HI = function () {
    this._sources = {};
    this._data = {};
    this._links = [];
    this.O_ = {};
    $HI[Ov][FaWb][R05g](this)
};
ZPOi($HI, ZaZ, {
    add: function (_, $) {
        if (!_ || !$)
            return;
        this._sources[_] = $;
        this._data[_] = [];
        $.autoCreateNewID = true;
        $.Zeq = $.getIdField();
        $._cZ = false;
        $.on("addrow", this.EnR, this);
        $.on("updaterow", this.EnR, this);
        $.on("deleterow", this.EnR, this);
        $.on("removerow", this.EnR, this);
        $.on("preload", this.AsA, this);
        $.on("selectionchanged", this.MGZ, this)
    },
    addLink: function (B, _, $) {
        if (!B || !_ || !$)
            return;
        if (!this._sources[B] || !this._sources[_])
            return;
        var A = {
            parentName: B,
            childName: _,
            parentField: $
        };
        this._links.push(A)
    },
    clearData: function () {
        this._data = {};
        this.O_ = {};
        for (var $ in this._sources)
            this._data = []
    },
    getData: function () {
        return this._data
    },
    _getNameByListControl: function ($) {
        for (var A in this._sources) {
            var _ = this._sources[A];
            if (_ == $)
                return A
        }
    },
    _getRecord: function (E, _, D) {
        var B = this._data[E];
        if (!B)
            return false;
        for (var $ = 0, C = B.length; $ < C; $++) {
            var A = B[$];
            if (A[D] == _[D])
                return A
        }
        return null
    },
    EnR: function (F) {
        var C = F.type,
		_ = F.record,
		D = this._getNameByListControl(F.sender),
		E = this._getRecord(D, _, F.sender.getIdField()),
		A = this._data[D];
        if (E) {
            A = this._data[D];
            A.remove(E)
        }
        if (C == "removerow" && _._state == "added");
        else
            A.push(_);
        this.O_[D] = F.sender.O_;
        if (_._state == "added") {
            var $ = this._getParentSource(F.sender);
            if ($) {
                var B = $[FSi]();
                if (B)
                    _._parentId = B[$.getIdField()];
                else
                    A.remove(_)
            }
        }
    },
    AsA: function (M) {
        var J = M.sender,
		L = this._getNameByListControl(J),
		K = M.sender.getIdField(),
		A = this._data[L],
		$ = {};
        for (var F = 0, C = A.length; F < C; F++) {
            var G = A[F];
            $[G[K]] = G
        }
        var N = this.O_[L];
        if (N)
            J.O_ = N;
        var I = M.data || [];
        for (F = 0, C = I.length; F < C; F++) {
            var G = I[F],
			H = $[G[K]];
            if (H) {
                delete H._uid;
                mini.copyTo(G, H)
            }
        }
        var D = this._getParentSource(J);
        if (J.getPageIndex && J.getPageIndex() == 0) {
            var E = [];
            for (F = 0, C = A.length; F < C; F++) {
                G = A[F];
                if (G._state == "added")
                    if (D) {
                        var B = D[FSi]();
                        if (B && B[D.getIdField()] == G._parentId)
                            E.push(G)
                    } else
                        E.push(G)
        }
        E.reverse();
        I.insertRange(0, E)
    }
    var _ = [];
    for (F = I.length - 1; F >= 0; F--) {
        G = I[F],
			H = $[G[K]];
        if (H && H._state == "removed") {
            I.removeAt(F);
            _.push(H)
        }
    }
},
_getParentSource: function (C) {
    var _ = this._getNameByListControl(C);
    for (var $ = 0, B = this._links.length; $ < B; $++) {
        var A = this._links[$];
        if (A.childName == _)
            return this._sources[A.parentName]
    }
},
_getLinks: function (B) {
    var C = this._getNameByListControl(B),
		D = [];
    for (var $ = 0, A = this._links.length; $ < A; $++) {
        var _ = this._links[$];
        if (_.parentName == C)
            D.push(_)
    }
    return D
},
MGZ: function (G) {
    var A = G.sender,
		_ = A[FSi](),
		F = this._getLinks(A);
    for (var $ = 0, E = F.length; $ < E; $++) {
        var D = F[$],
			C = this._sources[D.childName];
        if (_) {
            var B = {};
            B[D.parentField] = _[A.getIdField()];
            C.load(B)
        } else
            C[Aw]([])
    }
}
});
H58($HI, "dataset");
VgA = function () {
    VgA[Ov][FaWb][R05g](this)
};
ZPOi(VgA, Jva, {
    _clearBorder: false,
    formField: true,
    value: "",
    uiCls: "mini-hidden",
    _create: function () {
        this.el = document.createElement("input");
        this.el.type = "hidden";
        this.el.className = "mini-hidden"
    },
    setName: function ($) {
        this.name = $;
        this.el.name = $
    },
    setValue: function ($) {
        if ($ === null || $ === undefined)
            $ = "";
        this.el.value = $
    },
    getValue: function () {
        return this.el.value
    },
    getFormValue: function () {
        return this.getValue()
    }
});
H58(VgA, "hidden");
QHb = function () {
    QHb[Ov][FaWb][R05g](this);
    this[IJjY](false);
    this.setAllowDrag(this.allowDrag);
    this.setAllowResize(this[MZ])
};
ZPOi(QHb, Jva, {
    _clearBorder: false,
    uiCls: "mini-popup",
    _create: function () {
        var $ = this.el = document.createElement("div");
        this.el.className = "mini-popup";
        this._contentEl = this.el
    },
    _initEvents: function () {
        VMPY(function () {
            Pv3(this.el, "mouseover", this.QwgP, this)
        }, this)
    },
    doLayout: function () {
        if (!this.canLayout())
            return;
        QHb[Ov][SA][R05g](this);
        this.U_H();
        var A = this.el.childNodes;
        if (A)
            for (var $ = 0, B = A.length; $ < B; $++) {
                var _ = A[$];
                mini.layout(_)
            }
},
destroy: function ($) {
    if (this.el)
        this.el.onmouseover = null;
    mini.removeChilds(this._contentEl);
    Ej(document, "mousedown", this.BG, this);
    Ej(window, "resize", this.K6Wd, this);
    if (this.YyCo) {
        jQuery(this.YyCo).remove();
        this.YyCo = null
    }
    if (this.shadowEl) {
        jQuery(this.shadowEl).remove();
        this.shadowEl = null
    }
    QHb[Ov][Yr3P][R05g](this, $)
},
setBody: function (_) {
    if (!_)
        return;
    if (!mini.isArray(_))
        _ = [_];
    for (var $ = 0, A = _.length; $ < A; $++)
        mini.append(this._contentEl, _[$])
},
getAttrs: function ($) {
    var A = QHb[Ov][RH][R05g](this, $);
    mini[A5ac]($, A, ["popupEl", "popupCls", "showAction", "hideAction", "hAlign", "vAlign", "modalStyle", "onbeforeopen", "open", "onbeforeclose", "onclose"]);
    mini[QRH]($, A, ["showModal", "showShadow", "allowDrag", "allowResize"]);
    mini[ClW]($, A, ["showDelay", "hideDelay", "hOffset", "vOffset", "minWidth", "minHeight", "maxWidth", "maxHeight"]);
    var _ = mini[SY0]($, true);
    A.body = _;
    return A
}
});
H58(QHb, "popup");
QHb_prototype = {
    isPopup: false,
    popupEl: null,
    popupCls: "",
    showAction: "mouseover",
    hideAction: "outerclick",
    showDelay: 300,
    hideDelay: 500,
    hAlign: "left",
    vAlign: "below",
    hOffset: 0,
    vOffset: 0,
    minWidth: 50,
    minHeight: 25,
    maxWidth: 2000,
    maxHeight: 2000,
    showModal: false,
    showShadow: true,
    modalStyle: "opacity:0.2",
    Ii9: "mini-popup-drag",
    HPj: "mini-popup-resize",
    allowDrag: false,
    allowResize: false,
    U_HA: function () {
        if (!this.popupEl)
            return;
        Ej(this.popupEl, "click", this.Ock, this);
        Ej(this.popupEl, "contextmenu", this.Gsm, this);
        Ej(this.popupEl, "mouseover", this.QwgP, this)
    },
    G$: function () {
        if (!this.popupEl)
            return;
        Boy(this.popupEl, "click", this.Ock, this);
        Boy(this.popupEl, "contextmenu", this.Gsm, this);
        Boy(this.popupEl, "mouseover", this.QwgP, this)
    },
    doShow: function (A) {
        var $ = {
            popupEl: this.popupEl,
            htmlEvent: A,
            cancel: false
        };
        this.fire("BeforeOpen", $);
        if ($.cancel == true)
            return;
        this.fire("opening", $);
        if ($.cancel == true)
            return;
        if (!this.popupEl)
            this.show();
        else {
            var _ = {};
            if (A)
                _.xy = [A.pageX, A.pageY];
            this.showAtEl(this.popupEl, _)
        }
    },
    doHide: function (_) {
        var $ = {
            popupEl: this.popupEl,
            htmlEvent: _,
            cancel: false
        };
        this.fire("BeforeClose", $);
        if ($.cancel == true)
            return;
        this.close()
    },
    show: function (_, $) {
        this.showAtPos(_, $)
    },
    showAtPos: function (B, A) {
        this[Tlr9](document.body);
        if (!B)
            B = "center";
        if (!A)
            A = "middle";
        this.el.style.position = "absolute";
        this.el.style.left = "-2000px";
        this.el.style.top = "-2000px";
        this.el.style.display = "";
        this.T8o();
        var _ = mini.getViewportBox(),
		$ = L05(this.el);
        if (B == "left")
            B = 0;
        if (B == "center")
            B = _.width / 2 - $.width / 2;
        if (B == "right")
            B = _.width - $.width;
        if (A == "top")
            A = 0;
        if (A == "middle")
            A = _.y + _.height / 2 - $.height / 2;
        if (A == "bottom")
            A = _.height - $.height;
        if (B + $.width > _.right)
            B = _.right - $.width;
        if (A + $.height > _.bottom)
            A = _.bottom - $.height;
        this.EsTH(B, A)
    },
    QS5: function () {
        jQuery(this.YyCo).remove();
        if (!this[Rsza])
            return;
        if (this.visible == false)
            return;
        var $ = document.documentElement,
		A = parseInt(Math.max(document.body.scrollWidth, $ ? $.scrollWidth : 0)),
		D = parseInt(Math.max(document.body.scrollHeight, $ ? $.scrollHeight : 0)),
		C = mini.getViewportBox(),
		B = C.height;
        if (B < D)
            B = D;
        var _ = C.width;
        if (_ < A)
            _ = A;
        this.YyCo = mini.append(document.body, "<div class=\"mini-modal\"></div>");
        this.YyCo.style.height = B + "px";
        this.YyCo.style.width = _ + "px";
        this.YyCo.style.zIndex = CU(this.el, "zIndex") - 1;
        DaZ(this.YyCo, this.modalStyle)
    },
    U_H: function () {
        if (!this.shadowEl)
            this.shadowEl = mini.append(document.body, "<div class=\"mini-shadow\"></div>");
        this.shadowEl.style.display = this[Bd5m] ? "" : "none";
        if (this[Bd5m]) {
            var $ = L05(this.el),
			A = this.shadowEl.style;
            A.width = $.width + "px";
            A.height = $.height + "px";
            A.left = $.x + "px";
            A.top = $.y + "px";
            var _ = CU(this.el, "zIndex");
            if (!isNaN(_))
                this.shadowEl.style.zIndex = _ - 2
        }
    },
    T8o: function () {
        this.el.style.display = "";
        var $ = L05(this.el);
        if ($.width > this.maxWidth) {
            X9c(this.el, this.maxWidth);
            $ = L05(this.el)
        }
        if ($.height > this.maxHeight) {
            G2Mf(this.el, this.maxHeight);
            $ = L05(this.el)
        }
        if ($.width < this.minWidth) {
            X9c(this.el, this.minWidth);
            $ = L05(this.el)
        }
        if ($.height < this.minHeight) {
            G2Mf(this.el, this.minHeight);
            $ = L05(this.el)
        }
    },
    showAtEl: function (H, D) {
        H = X4g(H);
        if (!H)
            return;
        if (!this.isRender() || this.el.parentNode != document.body)
            this[Tlr9](document.body);
        var A = {
            hAlign: this.hAlign,
            vAlign: this.vAlign,
            hOffset: this.hOffset,
            vOffset: this.vOffset,
            popupCls: this.popupCls
        };
        mini.copyTo(A, D);
        E$_(H, A.popupCls);
        H.popupCls = A.popupCls;
        this._popupEl = H;
        this.el.style.position = "absolute";
        this.el.style.left = "-2000px";
        this.el.style.top = "-2000px";
        this.el.style.display = "";
        this[SA]();
        this.T8o();
        var J = mini.getViewportBox(),
		B = L05(this.el),
		L = L05(H),
		F = A.xy,
		C = A.hAlign,
		E = A.vAlign,
		M = J.width / 2 - B.width / 2,
		K = 0;
        if (F) {
            M = F[0];
            K = F[1]
        }
        switch (A.hAlign) {
            case "outleft":
                M = L.x - B.width;
                break;
            case "left":
                M = L.x;
                break;
            case "center":
                M = L.x + L.width / 2 - B.width / 2;
                break;
            case "right":
                M = L.right - B.width;
                break;
            case "outright":
                M = L.right;
                break;
            default:
                break
        }
        switch (A.vAlign) {
            case "above":
                K = L.y - B.height;
                break;
            case "top":
                K = L.y;
                break;
            case "middle":
                K = L.y + L.height / 2 - B.height / 2;
                break;
            case "bottom":
                K = L.bottom - B.height;
                break;
            case "below":
                K = L.bottom;
                break;
            default:
                break
        }
        M = parseInt(M);
        K = parseInt(K);
        if (A.outVAlign || A.outHAlign) {
            if (A.outVAlign == "above")
                if (K + B.height > J.bottom) {
                    var _ = L.y - J.y,
					I = J.bottom - L.bottom;
                    if (_ > I)
                        K = L.y - B.height
                }
        if (A.outHAlign == "outleft")
            if (M + B.width > J.right) {
                var G = L.x - J.x,
					$ = J.right - L.right;
                if (G > $)
                    M = L.x - B.width
            }
    if (A.outHAlign == "right")
        if (M + B.width > J.right)
            M = L.right - B.width;
this.EsTH(M, K)
} else
    this.showAtPos(M + A.hOffset, K + A.vOffset)
},
EsTH: function (A, _) {
    this.el.style.display = "";
    this.el.style.zIndex = mini.getMaxZIndex();
    mini.setX(this.el, A);
    mini.setY(this.el, _);
    this[IJjY](true);
    if (this.hideAction == "mouseout")
        Boy(document, "mousemove", this.Wtwj, this);
    var $ = this;
    this.U_H();
    this.QS5();
    mini.layoutIFrames(this.el);
    this.isPopup = true;
    Boy(document, "mousedown", this.BG, this);
    Boy(window, "resize", this.K6Wd, this);
    this.fire("Open")
},
open: function () {
    this.show()
},
close: function () {
    this.hide()
},
hide: function () {
    if (!this.el)
        return;
    if (this.popupEl)
        ZVS(this.popupEl, this.popupEl.popupCls);
    if (this._popupEl)
        ZVS(this._popupEl, this._popupEl.popupCls);
    this._popupEl = null;
    jQuery(this.YyCo).remove();
    if (this.shadowEl)
        this.shadowEl.style.display = "none";
    Ej(document, "mousemove", this.Wtwj, this);
    Ej(document, "mousedown", this.BG, this);
    Ej(window, "resize", this.K6Wd, this);
    this[IJjY](false);
    this.isPopup = false;
    this.fire("Close")
},
setPopupEl: function ($) {
    $ = X4g($);
    if (!$)
        return;
    this.U_HA();
    this.popupEl = $;
    this.G$()
},
setPopupCls: function ($) {
    this.popupCls = $
},
setShowAction: function ($) {
    this.showAction = $
},
setHideAction: function ($) {
    this.hideAction = $
},
setShowDelay: function ($) {
    this.showDelay = $
},
setHideDelay: function ($) {
    this.hideDelay = $
},
setHAlign: function ($) {
    this.hAlign = $
},
setVAlign: function ($) {
    this.vAlign = $
},
setHOffset: function ($) {
    $ = parseInt($);
    if (isNaN($))
        $ = 0;
    this.hOffset = $
},
setVOffset: function ($) {
    $ = parseInt($);
    if (isNaN($))
        $ = 0;
    this.vOffset = $
},
setShowModal: function ($) {
    this[Rsza] = $
},
setShowShadow: function ($) {
    this[Bd5m] = $
},
setMinWidth: function ($) {
    if (isNaN($))
        return;
    this.minWidth = $
},
setMinHeight: function ($) {
    if (isNaN($))
        return;
    this.minHeight = $
},
setMaxWidth: function ($) {
    if (isNaN($))
        return;
    this.maxWidth = $
},
setMaxHeight: function ($) {
    if (isNaN($))
        return;
    this.maxHeight = $
},
setAllowDrag: function ($) {
    this.allowDrag = $;
    ZVS(this.el, this.Ii9);
    if ($)
        E$_(this.el, this.Ii9)
},
setAllowResize: function ($) {
    this[MZ] = $;
    ZVS(this.el, this.HPj);
    if ($)
        E$_(this.el, this.HPj)
},
Ock: function (_) {
    if (this.W0Y)
        return;
    if (this.showAction != "leftclick")
        return;
    var $ = jQuery(this.popupEl).attr("allowPopup");
    if (String($) == "false")
        return;
    this.doShow(_)
},
Gsm: function (_) {
    if (this.W0Y)
        return;
    if (this.showAction != "rightclick")
        return;
    var $ = jQuery(this.popupEl).attr("allowPopup");
    if (String($) == "false")
        return;
    _.preventDefault();
    this.doShow(_)
},
QwgP: function (A) {
    if (this.W0Y)
        return;
    if (this.showAction != "mouseover")
        return;
    var _ = jQuery(this.popupEl).attr("allowPopup");
    if (String(_) == "false")
        return;
    clearTimeout(this._hideTimer);
    this._hideTimer = null;
    if (this.isPopup)
        return;
    var $ = this;
    this._showTimer = setTimeout(function () {
        $.doShow(A)
    }, this.showDelay)
},
Wtwj: function ($) {
    if (this.hideAction != "mouseout")
        return;
    this.$B$($)
},
BG: function ($) {
    if (this.hideAction != "outerclick")
        return;
    if (!this.isPopup)
        return;
    if (this[BmC]($) || (this.popupEl && Uqe(this.popupEl, $.target)));
    else
        this.doHide($)
},
$B$: function (_) {
    if (Uqe(this.el, _.target) || (this.popupEl && Uqe(this.popupEl, _.target)));
    else {
        clearTimeout(this._showTimer);
        this._showTimer = null;
        if (this._hideTimer)
            return;
        var $ = this;
        this._hideTimer = setTimeout(function () {
            $.doHide(_)
        }, this.hideDelay)
    }
},
K6Wd: function ($) {
    if (this[RPC]() && !mini.isIE6)
        this.QS5()
}
};
mini.copyTo(QHb.prototype, QHb_prototype);
RsJi = function () {
    RsJi[Ov][FaWb][R05g](this)
};
ZPOi(RsJi, Jva, {
    text: "",
    iconCls: "",
    iconStyle: "",
    plain: false,
    checkOnClick: false,
    checked: false,
    groupName: "",
    Wtk: "mini-button-plain",
    _hoverCls: "mini-button-hover",
    KXR: "mini-button-pressed",
    CeH: "mini-button-checked",
    LiH: "mini-button-disabled",
    allowCls: "",
    _clearBorder: false,
    set: function ($) {
        if (typeof $ == "string")
            return this;
        this.QYky = $.text || $[Jhs] || $.iconCls || $.iconPosition;
        RsJi[Ov].set[R05g](this, $);
        if (this.QYky === false) {
            this.QYky = true;
            this[YaK]()
        }
        return this
    },
    uiCls: "mini-button",
    _create: function () {
        this.el = document.createElement("a");
        this.el.className = "mini-button";
        this.el.hideFocus = true;
        this.el.href = "javascript:void(0)";
        this[YaK]()
    },
    _initEvents: function () {
        VMPY(function () {
            Pv3(this.el, "mousedown", this.CgJ, this);
            Pv3(this.el, "click", this.Qtm, this)
        }, this)
    },
    destroy: function ($) {
        if (this.el) {
            this.el.onclick = null;
            this.el.onmousedown = null
        }
        if (this.menu)
            this.menu.owner = null;
        this.menu = null;
        RsJi[Ov][Yr3P][R05g](this, $)
    },
    doUpdate: function () {
        if (this.QYky === false)
            return;
        var _ = "",
		$ = this.text;
        if (this.iconCls && $)
            _ = " mini-button-icon " + this.iconCls;
        else if (this.iconCls && $ === "") {
            _ = " mini-button-iconOnly " + this.iconCls;
            $ = "&nbsp;"
        }
        var A = "<span class=\"mini-button-text " + _ + "\">" + $ + "</span>";
        if (this.allowCls)
            A = A + "<span class=\"mini-button-allow " + this.allowCls + "\"></span>";
        this.el.innerHTML = A
    },
    href: "",
    setHref: function ($) {
        this.href = $;
        this.el.href = $;
        var _ = this.el;
        setTimeout(function () {
            _.onclick = null
        }, 100)
    },
    getHref: function () {
        return this.href
    },
    target: "",
    setTarget: function ($) {
        this.target = $;
        this.el.target = $
    },
    getTarget: function () {
        return this.target
    },
    setText: function ($) {
        if (this.text != $) {
            this.text = $;
            this[YaK]()
        }
    },
    getText: function () {
        return this.text
    },
    setIconCls: function ($) {
        this.iconCls = $;
        this[YaK]()
    },
    getIconCls: function () {
        return this.iconCls
    },
    setIconStyle: function ($) {
        this[Jhs] = $;
        this[YaK]()
    },
    getIconStyle: function () {
        return this[Jhs]
    },
    setIconPosition: function ($) {
        this.iconPosition = "left";
        this[YaK]()
    },
    getIconPosition: function () {
        return this.iconPosition
    },
    setPlain: function ($) {
        this.plain = $;
        if ($)
            this[UAC](this.Wtk);
        else
            this[X9GT](this.Wtk)
    },
    getPlain: function () {
        return this.plain
    },
    setGroupName: function ($) {
        this[VPhi] = $
    },
    getGroupName: function () {
        return this[VPhi]
    },
    setCheckOnClick: function ($) {
        this[IOKa] = $
    },
    getCheckOnClick: function () {
        return this[IOKa]
    },
    setChecked: function ($) {
        var _ = this.checked != $;
        this.checked = $;
        if ($)
            this[UAC](this.CeH);
        else
            this[X9GT](this.CeH);
        if (_)
            this.fire("CheckedChanged")
    },
    getChecked: function () {
        return this.checked
    },
    doClick: function () {
        this.Qtm(null)
    },
    Qtm: function (D) {
        if (this[DcOq]())
            return;
        this.focus();
        if (this[IOKa])
            if (this[VPhi]) {
                var _ = this[VPhi],
				C = mini.findControls(function ($) {
				    if ($.type == "button" && $[VPhi] == _)
				        return true
				});
                if (C.length > 0) {
                    for (var $ = 0, A = C.length; $ < A; $++) {
                        var B = C[$];
                        if (B != this)
                            B.setChecked(false)
                    }
                    this.setChecked(true)
                } else
                    this.setChecked(!this.checked)
            } else
                this.setChecked(!this.checked);
    this.fire("click", {
        htmlEvent: D
    });
    return false
},
CgJ: function ($) {
    if (this[DcOq]())
        return;
    this[UAC](this.KXR);
    Boy(document, "mouseup", this.JbQ, this)
},
JbQ: function ($) {
    this[X9GT](this.KXR);
    Ej(document, "mouseup", this.JbQ, this)
},
onClick: function (_, $) {
    this.on("click", _, $)
},
getAttrs: function ($) {
    var _ = RsJi[Ov][RH][R05g](this, $);
    _.text = $.innerHTML;
    mini[A5ac]($, _, ["text", "href", "iconCls", "iconStyle", "iconPosition", "groupName", "menu", "onclick", "oncheckedchanged", "target"]);
    mini[QRH]($, _, ["plain", "checkOnClick", "checked"]);
    return _
}
});
H58(RsJi, "button");
Y6XMButton = function () {
    Y6XMButton[Ov][FaWb][R05g](this)
};
ZPOi(Y6XMButton, RsJi, {
    uiCls: "mini-menubutton",
    allowCls: "mini-button-menu",
    setMenu: function ($) {
        if (mini.isArray($))
            $ = {
                type: "menu",
                items: $
            };
        if (typeof $ == "string") {
            var _ = X4g($);
            if (!_)
                return;
            mini.parse($);
            $ = mini.get($)
        }
        if (this.menu !== $) {
            this.menu = mini.getAndCreate($);
            this.menu.setPopupEl(this.el);
            this.menu.setPopupCls("mini-button-popup");
            this.menu.setShowAction("leftclick");
            this.menu.setHideAction("outerclick");
            this.menu.setHAlign("left");
            this.menu.setVAlign("below");
            this.menu.hide();
            this.menu.owner = this
        }
    },
    setEnabled: function ($) {
        this.enabled = $;
        if ($)
            this[X9GT](this.LiH);
        else
            this[UAC](this.LiH);
        jQuery(this.el).attr("allowPopup", !!$)
    }
});
H58(Y6XMButton, "menubutton");
mini.SplitButton = function () {
    mini.SplitButton[Ov][FaWb][R05g](this)
};
ZPOi(mini.SplitButton, Y6XMButton, {
    uiCls: "mini-splitbutton",
    allowCls: "mini-button-split"
});
H58(mini.SplitButton, "splitbutton");
ME8N = function () {
    ME8N[Ov][FaWb][R05g](this)
};
ZPOi(ME8N, Jva, {
    formField: true,
    text: "",
    checked: false,
    defaultValue: false,
    trueValue: true,
    falseValue: false,
    uiCls: "mini-checkbox",
    _create: function () {
        var $ = this.uid + "$check";
        this.el = document.createElement("span");
        this.el.className = "mini-checkbox";
        this.el.innerHTML = "<input id=\"" + $ + "\" name=\"" + this.id + "\" type=\"checkbox\" class=\"mini-checkbox-check\"><label for=\"" + $ + "\" onclick=\"return false;\">" + this.text + "</label>";
        this.Mjs = this.el.firstChild;
        this.Mmm = this.el.lastChild
    },
    destroy: function ($) {
        if (this.Mjs) {
            this.Mjs.onmouseup = null;
            this.Mjs.onclick = null;
            this.Mjs = null
        }
        ME8N[Ov][Yr3P][R05g](this, $)
    },
    _initEvents: function () {
        VMPY(function () {
            Boy(this.el, "click", this.J4H, this);
            this.Mjs.onmouseup = function () {
                return false
            };
            var $ = this;
            this.Mjs.onclick = function () {
                if ($[DcOq]())
                    return false
            }
        }, this)
    },
    setName: function ($) {
        this.name = $;
        mini.setAttr(this.Mjs, "name", this.name)
    },
    setText: function ($) {
        if (this.text !== $) {
            this.text = $;
            this.Mmm.innerHTML = $
        }
    },
    getText: function () {
        return this.text
    },
    setChecked: function ($) {
        if ($ === true)
            $ = true;
        else if ($ == this.trueValue)
            $ = true;
        else if ($ == "true")
            $ = true;
        else if ($ === 1)
            $ = true;
        else if ($ == "Y")
            $ = true;
        else
            $ = false;
        if (this.checked !== $) {
            this.checked = !!$;
            this.Mjs.checked = this.checked;
            this.value = this.getValue()
        }
    },
    getChecked: function () {
        return this.checked
    },
    setValue: function ($) {
        if (this.checked != $) {
            this.setChecked($);
            this.value = this.getValue()
        }
    },
    getValue: function () {
        return String(this.checked == true ? this.trueValue : this.falseValue)
    },
    getFormValue: function () {
        return this.getValue()
    },
    setTrueValue: function ($) {
        this.Mjs.value = $;
        this.trueValue = $
    },
    getTrueValue: function () {
        return this.trueValue
    },
    setFalseValue: function ($) {
        this.falseValue = $
    },
    getFalseValue: function () {
        return this.falseValue
    },
    J4H: function ($) {
        if (this[DcOq]())
            return;
        this.setChecked(!this.checked);
        this.fire("checkedchanged", {
            checked: this.checked
        });
        this.fire("valuechanged", {
            value: this.getValue()
        });
        this.fire("click", $, this)
    },
    getAttrs: function (A) {
        var D = ME8N[Ov][RH][R05g](this, A),
		C = jQuery(A);
        D.text = A.innerHTML;
        mini[A5ac](A, D, ["text", "oncheckedchanged", "onclick", "onvaluechanged"]);
        mini[QRH](A, D, ["enabled"]);
        var B = mini.getAttr(A, "checked");
        if (B)
            D.checked = (B == "true" || B == "checked") ? true : false;
        var _ = C.attr("trueValue");
        if (_) {
            D.trueValue = _;
            _ = parseInt(_);
            if (!isNaN(_))
                D.trueValue = _
        }
        var $ = C.attr("falseValue");
        if ($) {
            D.falseValue = $;
            $ = parseInt($);
            if (!isNaN($))
                D.falseValue = $
        }
        return D
    }
});
H58(ME8N, "checkbox");
B6 = function () {
    B6[Ov][FaWb][R05g](this);
    var $ = this[DcOq]();
    if ($ || this.allowInput == false)
        this.$g[MLU] = true;
    if (this.enabled == false)
        this[UAC](this.LiH);
    if ($)
        this[UAC](this.GZk);
    if (this.required)
        this[UAC](this.LEO)
};
ZPOi(B6, Yw, {
    name: "",
    formField: true,
    defaultValue: "",
    value: "",
    text: "",
    emptyText: "",
    maxLength: 1000,
    minLength: 0,
    width: 125,
    height: 21,
    inputAsValue: false,
    allowInput: true,
    We8s: "mini-buttonedit-noInput",
    GZk: "mini-buttonedit-readOnly",
    LiH: "mini-buttonedit-disabled",
    _Bi: "mini-buttonedit-empty",
    K8: "mini-buttonedit-focus",
    ZSY: "mini-buttonedit-button",
    SKS: "mini-buttonedit-button-hover",
    LW9: "mini-buttonedit-button-pressed",
    set: function ($) {
        if (typeof $ == "string")
            return this;
        this.QYky = !($.enabled == false || $.allowInput == false || $[MLU]);
        B6[Ov].set[R05g](this, $);
        if (this.QYky === false) {
            this.QYky = true;
            this[YaK]()
        }
        return this
    },
    uiCls: "mini-buttonedit",
    _RaGHtml: function () {
        var $ = "onmouseover=\"E$_(this,'" + this.SKS + "');\" " + "onmouseout=\"ZVS(this,'" + this.SKS + "');\"";
        return "<span class=\"mini-buttonedit-button\" " + $ + "><span class=\"mini-buttonedit-icon\"></span></span>"
    },
    _create: function () {
        this.el = document.createElement("span");
        this.el.className = "mini-buttonedit";
        var $ = this._RaGHtml();
        this.el.innerHTML = "<span class=\"mini-buttonedit-border\"><input type=\"input\" class=\"mini-buttonedit-input\" autocomplete=\"off\"/>" + $ + "</span><input name=\"" + this.name + "\" type=\"hidden\"/>";
        this.KDCb = this.el.firstChild;
        this.$g = this.KDCb.firstChild;
        this.$E = this.el.lastChild;
        this._buttonEl = this.KDCb.lastChild
    },
    destroy: function ($) {
        if (this.el) {
            this.el.onmousedown = null;
            this.el.onmousewheel = null;
            this.el.onmouseover = null;
            this.el.onmouseout = null
        }
        if (this.$g) {
            this.$g.onchange = null;
            this.$g.onfocus = null;
            mini[Y5P](this.$g);
            this.$g = null
        }
        B6[Ov][Yr3P][R05g](this, $)
    },
    _initEvents: function () {
        VMPY(function () {
            Pv3(this.el, "mousedown", this.CgJ, this);
            Pv3(this.$g, "focus", this.GK7, this);
            Pv3(this.$g, "change", this.Vr, this)
        }, this)
    },
    $c: false,
    UiL: function () {
        if (this.$c)
            return;
        this.$c = true;
        Boy(this.el, "click", this.Qtm, this);
        Boy(this.$g, "blur", this.Clw, this);
        Boy(this.$g, "keydown", this.G3, this);
        Boy(this.$g, "keyup", this.F4q, this);
        Boy(this.$g, "keypress", this.XQw, this)
    },
    _buttonWidth: 20,
    doLayout: function () {
        if (!this.canLayout())
            return;
        B6[Ov][SA][R05g](this);
        var $ = EvDb(this.el);
        if (this.el.style.width == "100%")
            $ -= 1;
        if (this.WR)
            $ -= 18;
        $ -= 2;
        this.KDCb.style.width = $ + "px";
        $ -= this._buttonWidth;
        if (this.el.style.width == "100%")
            $ -= 1;
        if ($ < 0)
            $ = 0;
        this.$g.style.width = $ + "px"
    },
    setHeight: function ($) {
        if (parseInt($) == $)
            $ += "px";
        this.height = $
    },
    BQ: function () { },
    focus: function () {
        try {
            this.$g.focus();
            var $ = this;
            setTimeout(function () {
                if ($.D_)
                    $.$g.focus()
            }, 10)
        } catch (_) { }

    },
    blur: function () {
        try {
            this.$g.blur()
        } catch ($) { }

    },
    selectText: function () {
        this.$g[Zk]()
    },
    getTextEl: function () {
        return this.$g
    },
    setName: function ($) {
        this.name = $;
        this.$E.name = $
    },
    setEmptyText: function ($) {
        if ($ === null || $ === undefined)
            $ = "";
        this[_wQ] = $;
        this.BQ()
    },
    getEmptyText: function () {
        return this[_wQ]
    },
    setText: function ($) {
        if ($ === null || $ === undefined)
            $ = "";
        var _ = this.text !== $;
        this.text = $;
        this.$g.value = $
    },
    getText: function () {
        var $ = this.$g.value;
        return $ != this[_wQ] ? $ : ""
    },
    setValue: function ($) {
        if ($ === null || $ === undefined)
            $ = "";
        var _ = this.value !== $;
        this.value = $;
        this.BQ()
    },
    getValue: function () {
        return this.value
    },
    getFormValue: function () {
        value = this.value;
        if (value === null || value === undefined)
            value = "";
        return String(value)
    },
    setMaxLength: function ($) {
        $ = parseInt($);
        if (isNaN($))
            return;
        this.maxLength = $;
        this.$g.maxLength = $
    },
    getMaxLength: function () {
        return this.maxLength
    },
    setMinLength: function ($) {
        $ = parseInt($);
        if (isNaN($))
            return;
        this.minLength = $
    },
    getMinLength: function () {
        return this.minLength
    },
    _doReadOnly: function () {
        var $ = this[DcOq]();
        if ($ || this.allowInput == false)
            this.$g[MLU] = true;
        else
            this.$g[MLU] = false;
        if ($)
            this[UAC](this.GZk);
        else
            this[X9GT](this.GZk);
        if (this.allowInput)
            this[X9GT](this.We8s);
        else
            this[UAC](this.We8s)
    },
    setAllowInput: function ($) {
        this.allowInput = $;
        this._doReadOnly()
    },
    getAllowInput: function () {
        return this.allowInput
    },
    setInputAsValue: function ($) {
        this.inputAsValue = $
    },
    getInputAsValue: function () {
        return this.inputAsValue
    },
    WR: null,
    getErrorIconEl: function () {
        if (!this.WR)
            this.WR = mini.append(this.el, "<span class=\"mini-errorIcon\"></span>");
        return this.WR
    },
    E2VD: function () {
        if (this.WR) {
            var $ = this.WR;
            jQuery($).remove()
        }
        this.WR = null
    },
    Qtm: function ($) {
        if (this[DcOq]() || this.enabled == false)
            return;
        if (Uqe(this._buttonEl, $.target))
            this.FWY($)
    },
    CgJ: function (B) {
        if (this[DcOq]() || this.enabled == false)
            return;
        if (!Uqe(this.$g, B.target)) {
            var $ = this;
            setTimeout(function () {
                $.focus();
                mini.selectRange($.$g, 1000, 1000)
            }, 1);
            if (Uqe(this._buttonEl, B.target)) {
                var _ = $Rz(B.target, "mini-buttonedit-up"),
				A = $Rz(B.target, "mini-buttonedit-down");
                if (_) {
                    E$_(_, this.LW9);
                    this.Pg(B, "up")
                } else if (A) {
                    E$_(A, this.LW9);
                    this.Pg(B, "down")
                } else {
                    E$_(this._buttonEl, this.LW9);
                    this.Pg(B)
                }
                Boy(document, "mouseup", this.JbQ, this)
            }
        }
    },
    JbQ: function (_) {
        var $ = this;
        setTimeout(function () {
            var A = $._buttonEl.getElementsByTagName("*");
            for (var _ = 0, B = A.length; _ < B; _++)
                ZVS(A[_], $.LW9);
            ZVS($._buttonEl, $.LW9);
            ZVS($.el, $.KXR)
        }, 80);
        Ej(document, "mouseup", this.JbQ, this)
    },
    GK7: function ($) {
        this[YaK]();
        this.UiL();
        if (this[DcOq]())
            return;
        this.D_ = true;
        this[UAC](this.K8)
    },
    Clw: function (_) {
        this.D_ = false;
        var $ = this;
        setTimeout(function () {
            if ($.D_ == false)
                $[X9GT]($.K8)
        }, 2)
    },
    G3: function (_) {
        this.fire("keydown", {
            htmlEvent: _
        });
        if (_.keyCode == 8 && (this[DcOq]() || this.allowInput == false))
            return false;
        if (_.keyCode == 13) {
            var $ = this;
            $.Vr(null);
            $.fire("enter")
        }
        if (_.keyCode == 27)
            _.preventDefault()
    },
    Vr: function () {
        var _ = this.$g.value,
		$ = this.getValue();
        this[XlA](_);
        if ($ !== this.getFormValue())
            this.ZsI()
    },
    F4q: function ($) {
        this.fire("keyup", {
            htmlEvent: $
        })
    },
    XQw: function ($) {
        this.fire("keypress", {
            htmlEvent: $
        })
    },
    FWY: function ($) {
        var _ = {
            htmlEvent: $,
            cancel: false
        };
        this.fire("beforebuttonclick", _);
        if (_.cancel == true)
            return;
        this.fire("buttonclick", _)
    },
    Pg: function (_, $) {
        this.focus();
        this[UAC](this.K8);
        this.fire("buttonmousedown", {
            htmlEvent: _,
            spinType: $
        })
    },
    onButtonClick: function (_, $) {
        this.on("buttonclick", _, $)
    },
    onButtonMouseDown: function (_, $) {
        this.on("buttonmousedown", _, $)
    },
    onTextChanged: function (_, $) {
        this.on("textchanged", _, $)
    },
    textName: "",
    setTextName: function ($) {
        this.textName = $;
        if (this.$g)
            mini.setAttr(this.$g, "name", this.textName)
    },
    getTextName: function () {
        return this.textName
    },
    getAttrs: function ($) {
        var A = B6[Ov][RH][R05g](this, $),
		_ = jQuery($);
        mini[A5ac]($, A, ["value", "text", "textName", "onenter", "onkeydown", "onkeyup", "onkeypress", "onbuttonclick", "onbuttonmousedown", "ontextchanged"]);
        mini[QRH]($, A, ["allowInput", "inputAsValue"]);
        mini[ClW]($, A, ["maxLength", "minLength"]);
        return A
    }
});
H58(B6, "buttonedit");
Q2q = function () {
    Q2q[Ov][FaWb][R05g](this)
};
ZPOi(Q2q, Yw, {
    name: "",
    formField: true,
    minHeight: 15,
    maxLength: 5000,
    emptyText: "",
    text: "",
    value: "",
    defaultValue: "",
    width: 125,
    height: 21,
    _Bi: "mini-textbox-empty",
    K8: "mini-textbox-focus",
    LiH: "mini-textbox-disabled",
    uiCls: "mini-textbox",
    EP: "text",
    _create: function () {
        var $ = "<input type=\"" + this.EP + "\" class=\"mini-textbox-input\" autocomplete=\"off\"/>";
        if (this.EP == "textarea")
            $ = "<textarea class=\"mini-textbox-input\" autocomplete=\"off\"/></textarea>";
        $ += "<input type=\"hidden\"/>";
        this.el = document.createElement("span");
        this.el.className = "mini-textbox";
        this.el.innerHTML = $;
        this.$g = this.el.firstChild;
        this.$E = this.el.lastChild;
        this.KDCb = this.$g
    },
    _initEvents: function () {
        VMPY(function () {
            Pv3(this.$g, "drop", this.__OnDropText, this);
            Pv3(this.$g, "change", this.Vr, this);
            Pv3(this.$g, "focus", this.GK7, this);
            Pv3(this.el, "mousedown", this.CgJ, this)
        }, this);
        this.on("validation", this.AF, this)
    },
    $c: false,
    UiL: function () {
        if (this.$c)
            return;
        this.$c = true;
        Boy(this.$g, "blur", this.Clw, this);
        Boy(this.$g, "keydown", this.G3, this);
        Boy(this.$g, "keyup", this.F4q, this);
        Boy(this.$g, "keypress", this.XQw, this)
    },
    destroy: function ($) {
        if (this.el)
            this.el.onmousedown = null;
        if (this.$g) {
            this.$g.ondrop = null;
            this.$g.onchange = null;
            this.$g.onfocus = null;
            mini[Y5P](this.$g);
            this.$g = null
        }
        if (this.$E) {
            mini[Y5P](this.$E);
            this.$E = null
        }
        Q2q[Ov][Yr3P][R05g](this, $)
    },
    doLayout: function () {
        if (!this.canLayout())
            return;
        var $ = EvDb(this.el);
        if (this.WR)
            $ -= 18;
        $ -= 4;
        if (this.el.style.width == "100%")
            $ -= 1;
        if ($ < 0)
            $ = 0;
        this.$g.style.width = $ + "px"
    },
    setHeight: function ($) {
        if (parseInt($) == $)
            $ += "px";
        this.height = $;
        if (this.EP == "textarea") {
            this.el.style.height = $;
            this[SA]()
        }
    },
    setName: function ($) {
        if (this.name != $) {
            this.name = $;
            this.$E.name = $
        }
    },
    setValue: function ($) {
        if ($ === null || $ === undefined)
            $ = "";
        $ = String($);
        if (this.value !== $) {
            this.value = $;
            this.$E.value = this.$g.value = $;
            this.BQ()
        }
    },
    getValue: function () {
        return this.value
    },
    getFormValue: function () {
        value = this.value;
        if (value === null || value === undefined)
            value = "";
        return String(value)
    },
    setAllowInput: function ($) {
        if (this.allowInput != $) {
            this.allowInput = $;
            this[YaK]()
        }
    },
    getAllowInput: function () {
        return this.allowInput
    },
    BQ: function () {
        if (this.D_)
            return;
        if (this.value == "" && this[_wQ]) {
            this.$g.value = this[_wQ];
            E$_(this.el, this._Bi)
        } else
            ZVS(this.el, this._Bi)
    },
    setEmptyText: function ($) {
        if (this[_wQ] != $) {
            this[_wQ] = $;
            this.BQ()
        }
    },
    getEmptyText: function () {
        return this[_wQ]
    },
    setMaxLength: function ($) {
        this.maxLength = $;
        mini.setAttr(this.$g, "maxLength", $);
        if (this.EP == "textarea")
            Boy(this.$g, "keypress", this.__OnMaxLengthKeyUp, this)
    },
    __OnMaxLengthKeyUp: function ($) {
        if (this.$g.value.length >= this.maxLength)
            $.preventDefault()
    },
    getMaxLength: function () {
        return this.maxLength
    },
    setReadOnly: function ($) {
        if (this[MLU] != $) {
            this[MLU] = $;
            this[YaK]()
        }
    },
    setEnabled: function ($) {
        if (this.enabled != $) {
            this.enabled = $;
            this[YaK]()
        }
    },
    doUpdate: function () {
        if (this.enabled)
            this[X9GT](this.LiH);
        else
            this[UAC](this.LiH);
        if (this[DcOq]() || this.allowInput == false)
            this.$g[MLU] = true;
        else
            this.$g[MLU] = false;
        if (this.required)
            this[UAC](this.LEO);
        else
            this[X9GT](this.LEO)
    },
    focus: function () {
        try {
            this.$g.focus()
        } catch ($) { }

    },
    blur: function () {
        try {
            this.$g.blur()
        } catch ($) { }

    },
    selectText: function () {
        this.$g[Zk]()
    },
    getTextEl: function () {
        return this.$g
    },
    WR: null,
    getErrorIconEl: function () {
        if (!this.WR)
            this.WR = mini.append(this.el, "<span class=\"mini-errorIcon\"></span>");
        return this.WR
    },
    E2VD: function () {
        if (this.WR) {
            var $ = this.WR;
            jQuery($).remove()
        }
        this.WR = null
    },
    CgJ: function (_) {
        var $ = this;
        if (!Uqe(this.$g, _.target))
            setTimeout(function () {
                $.focus();
                mini.selectRange($.$g, 1000, 1000)
            }, 1);
        else
            setTimeout(function () {
                $.$g.focus()
            }, 1)
    },
    Vr: function (A, _) {
        var $ = this.value;
        this[XlA](this.$g.value);
        if ($ !== this.getValue() || _ === true)
            this.ZsI()
    },
    __OnDropText: function (_) {
        var $ = this;
        setTimeout(function () {
            $.Vr(_)
        }, 0)
    },
    G3: function (_) {
        this.fire("keydown", {
            htmlEvent: _
        });
        if (_.keyCode == 8 && (this[DcOq]() || this.allowInput == false))
            return false;
        if (_.keyCode == 13) {
            this.Vr(null, true);
            var $ = this;
            setTimeout(function () {
                $.fire("enter")
            }, 10)
        }
        if (_.keyCode == 27)
            _.preventDefault()
    },
    F4q: function ($) {
        this.fire("keyup", {
            htmlEvent: $
        })
    },
    XQw: function ($) {
        this.fire("keypress", {
            htmlEvent: $
        })
    },
    GK7: function ($) {
        this[YaK]();
        if (this[DcOq]())
            return;
        this.D_ = true;
        this[UAC](this.K8);
        this.UiL();
        ZVS(this.el, this._Bi);
        if (this[_wQ] && this.$g.value == this[_wQ]) {
            this.$g.value = "";
            this.$g[Zk]()
        }
    },
    Clw: function (_) {
        this.D_ = false;
        var $ = this;
        setTimeout(function () {
            if ($.D_ == false)
                $[X9GT]($.K8)
        }, 2);
        if (this[_wQ] && this.$g.value == "") {
            this.$g.value = this[_wQ];
            E$_(this.el, this._Bi)
        }
    },
    getAttrs: function ($) {
        var A = Q2q[Ov][RH][R05g](this, $),
		_ = jQuery($);
        mini[A5ac]($, A, ["value", "text", "emptyText", "onenter", "onkeydown", "onkeyup", "onkeypress", "maxLengthErrorText", "minLengthErrorText", "vtype", "emailErrorText", "urlErrorText", "floatErrorText", "intErrorText", "dateErrorText", "minErrorText", "maxErrorText", "rangeLengthErrorText", "rangeErrorText", "rangeCharErrorText"]);
        mini[QRH]($, A, ["allowInput"]);
        mini[ClW]($, A, ["maxLength", "minLength", "minHeight"]);
        return A
    },
    vtype: "",
    setVtype: function ($) {
        this.vtype = $
    },
    getVtype: function () {
        return this.vtype
    },
    AF: function ($) {
        if ($.isValid == false)
            return;
        mini._ValidateVType(this.vtype, $.value, $, this)
    },
    setEmailErrorText: function ($) {
        this.emailErrorText = $
    },
    getEmailErrorText: function () {
        return this.emailErrorText
    },
    setUrlErrorText: function ($) {
        this.urlErrorText = $
    },
    getUrlErrorText: function () {
        return this.urlErrorText
    },
    setFloatErrorText: function ($) {
        this.floatErrorText = $
    },
    getFloatErrorText: function () {
        return this.floatErrorText
    },
    setIntErrorText: function ($) {
        this.intErrorText = $
    },
    getIntErrorText: function () {
        return this.intErrorText
    },
    setDateErrorText: function ($) {
        this.dateErrorText = $
    },
    getDateErrorText: function () {
        return this.dateErrorText
    },
    setMaxLengthErrorText: function ($) {
        this.maxLengthErrorText = $
    },
    getMaxLengthErrorText: function () {
        return this.maxLengthErrorText
    },
    setMinLengthErrorText: function ($) {
        this.minLengthErrorText = $
    },
    getMinLengthErrorText: function () {
        return this.minLengthErrorText
    },
    setMaxErrorText: function ($) {
        this.maxErrorText = $
    },
    getMaxErrorText: function () {
        return this.maxErrorText
    },
    setMinErrorText: function ($) {
        this.minErrorText = $
    },
    getMinErrorText: function () {
        return this.minErrorText
    },
    setRangeLengthErrorText: function ($) {
        this.rangeLengthErrorText = $
    },
    getRangeLengthErrorText: function () {
        return this.rangeLengthErrorText
    },
    setRangeCharErrorText: function ($) {
        this.rangeCharErrorText = $
    },
    getRangeCharErrorText: function () {
        return this.rangeCharErrorText
    },
    setRangeErrorText: function ($) {
        this.rangeErrorText = $
    },
    getRangeErrorText: function () {
        return this.rangeErrorText
    }
});
H58(Q2q, "textbox");
_obf = function () {
    _obf[Ov][FaWb][R05g](this)
};
ZPOi(_obf, Q2q, {
    uiCls: "mini-password",
    EP: "password",
    setEmptyText: function ($) {
        this[_wQ] = ""
    }
});
H58(_obf, "password");
$a = function () {
    $a[Ov][FaWb][R05g](this)
};
ZPOi($a, Q2q, {
    maxLength: 100000,
    width: 180,
    height: 50,
    minHeight: 50,
    EP: "textarea",
    uiCls: "mini-textarea",
    doLayout: function () {
        if (!this.canLayout())
            return;
        $a[Ov][SA][R05g](this);
        var $ = Cop(this.el);
        $ -= 2;
        if ($ < 0)
            $ = 0;
        this.$g.style.height = $ + "px"
    }
});
H58($a, "textarea");
KWC = function () {
    KWC[Ov][FaWb][R05g](this);
    this.LtD();
    this.el.className += " mini-popupedit"
};
ZPOi(KWC, B6, {
    uiCls: "mini-popupedit",
    popup: null,
    popupCls: "mini-buttonedit-popup",
    _hoverCls: "mini-buttonedit-hover",
    KXR: "mini-buttonedit-pressed",
    destroy: function ($) {
        if (this.isShowPopup())
            this[LjIM]();
        if (this.popup) {
            this.popup[Yr3P]();
            this.popup = null
        }
        KWC[Ov][Yr3P][R05g](this, $)
    },
    _initEvents: function () {
        KWC[Ov][Ri$][R05g](this);
        VMPY(function () {
            Pv3(this.el, "mouseover", this.QwgP, this);
            Pv3(this.el, "mouseout", this.S0ud, this)
        }, this)
    },
    Oqf: function () {
        this.buttons = [];
        var $ = this.createButton({
            cls: "mini-buttonedit-popup",
            iconCls: "mini-buttonedit-icons-popup",
            name: "popup"
        });
        this.buttons.push($)
    },
    QwgP: function ($) {
        if (this[DcOq]() || this.allowInput)
            return;
        if ($Rz($.target, "mini-buttonedit-border"))
            this[UAC](this._hoverCls)
    },
    S0ud: function ($) {
        if (this[DcOq]() || this.allowInput)
            return;
        this[X9GT](this._hoverCls)
    },
    CgJ: function ($) {
        if (this[DcOq]())
            return;
        KWC[Ov].CgJ[R05g](this, $);
        if (this.allowInput == false && $Rz($.target, "mini-buttonedit-border")) {
            E$_(this.el, this.KXR);
            Boy(document, "mouseup", this.JbQ, this)
        }
    },
    G3: function ($) {
        this.fire("keydown", {
            htmlEvent: $
        });
        if ($.keyCode == 8 && (this[DcOq]() || this.allowInput == false))
            return false;
        if ($.keyCode == 9) {
            this[LjIM]();
            return
        }
        if ($.keyCode == 27) {
            this[LjIM]();
            return
        }
        if ($.keyCode == 13)
            this.fire("enter");
        if (this.isShowPopup())
            if ($.keyCode == 13 || $.keyCode == 27)
                $.stopPropagation()
},
within: function ($) {
    if (Uqe(this.el, $.target))
        return true;
    if (this.popup[BmC]($))
        return true;
    return false
},
popupWidth: "100%",
popupMinWidth: 50,
popupMaxWidth: 2000,
popupHeight: "",
popupMinHeight: 30,
popupMaxHeight: 2000,
setPopup: function ($) {
    if (typeof $ == "string") {
        mini.parse($);
        $ = mini.get($)
    }
    var _ = mini.getAndCreate($);
    if (!_)
        return;
    _[IJjY](true);
    _[Tlr9](this.popup._contentEl);
    _.owner = this;
    _.on("beforebuttonclick", this.YelI, this)
},
getPopup: function () {
    if (!this.popup)
        this.LtD();
    return this.popup
},
LtD: function () {
    this.popup = new QHb();
    this.popup.setShowAction("none");
    this.popup.setHideAction("outerclick");
    this.popup.setPopupEl(this.el);
    this.popup.on("BeforeClose", this.U2mn, this);
    Boy(this.popup.el, "keydown", this.__OnPopupKeyDown, this)
},
U2mn: function ($) {
    if (this[BmC]($.htmlEvent))
        $.cancel = true
},
__OnPopupKeyDown: function ($) { },
showPopup: function () {
    var _ = this.getPopup(),
		B = this.getBox(),
		$ = this[W6j];
    if (this[W6j] == "100%")
        $ = B.width;
    _[RG$]($);
    var A = parseInt(this[YR]);
    if (!isNaN(A))
        _[XS9m](A);
    else
        _[XS9m]("auto");
    _.setMinWidth(this[$VA4]);
    _.setMinHeight(this[QdaN]);
    _.setMaxWidth(this[ItwZ]);
    _.setMaxHeight(this[DUc]);
    _.showAtEl(this.el, {
        hAlign: "left",
        vAlign: "below",
        outVAlign: "above",
        outHAlign: "right",
        popupCls: this.popupCls
    });
    _.on("Close", this.LP, this);
    this.fire("showpopup")
},
LP: function ($) {
    this.fire("hidepopup")
},
hidePopup: function () {
    var $ = this.getPopup();
    $.close()
},
isShowPopup: function () {
    if (this.popup && this.popup.visible)
        return true;
    else
        return false
},
setPopupWidth: function ($) {
    this[W6j] = $
},
setPopupMaxWidth: function ($) {
    this[ItwZ] = $
},
setPopupMinWidth: function ($) {
    this[$VA4] = $
},
getPopupWidth: function ($) {
    return this[W6j]
},
getPopupMaxWidth: function ($) {
    return this[ItwZ]
},
getPopupMinWidth: function ($) {
    return this[$VA4]
},
setPopupHeight: function ($) {
    this[YR] = $
},
setPopupMaxHeight: function ($) {
    this[DUc] = $
},
setPopupMinHeight: function ($) {
    this[QdaN] = $
},
getPopupHeight: function ($) {
    return this[YR]
},
getPopupMaxHeight: function ($) {
    return this[DUc]
},
getPopupMinHeight: function ($) {
    return this[QdaN]
},
Qtm: function (_) {
    if (this[DcOq]())
        return;
    if (Uqe(this._buttonEl, _.target))
        this.FWY(_);
    if (this.allowInput == false || Uqe(this._buttonEl, _.target))
        if (this.isShowPopup())
            this[LjIM]();
        else {
            var $ = this;
            setTimeout(function () {
                $[_0oZ]()
            }, 1)
        }
},
YelI: function ($) {
    if ($.name == "close")
        this[LjIM]();
    $.cancel = true
},
getAttrs: function ($) {
    var _ = KWC[Ov][RH][R05g](this, $);
    mini[A5ac]($, _, ["popupWidth", "popupHeight", "popup", "onshowpopup", "onhidepopup"]);
    mini[ClW]($, _, ["popupMinWidth", "popupMaxWidth", "popupMinHeight", "popupMaxHeight"]);
    return _
}
});
H58(KWC, "popupedit");
ImY = function () {
    this.data = [];
    this.columns = [];
    ImY[Ov][FaWb][R05g](this)
};
ZPOi(ImY, KWC, {
    text: "",
    value: "",
    valueField: "id",
    textField: "text",
    delimiter: ",",
    multiSelect: false,
    data: [],
    url: "",
    columns: [],
    allowInput: false,
    valueFromSelect: false,
    popupMaxHeight: 200,
    set: function (A) {
        if (typeof A == "string")
            return this;
        var $ = A.value;
        delete A.value;
        var B = A.url;
        delete A.url;
        var _ = A.data;
        delete A.data;
        ImY[Ov].set[R05g](this, A);
        if (!mini.isNull(_)) {
            this[JmQP](_);
            A.data = _
        }
        if (!mini.isNull(B)) {
            this.setUrl(B);
            A.url = B
        }
        if (!mini.isNull($)) {
            this[XlA]($);
            A.value = $
        }
        return this
    },
    uiCls: "mini-combobox",
    LtD: function () {
        ImY[Ov].LtD[R05g](this);
        this.Rbw = new CACT();
        this.Rbw.setBorderStyle("border:0;");
        this.Rbw.setStyle("width:100%;height:auto;");
        this.Rbw[Tlr9](this.popup._contentEl);
        this.Rbw.on("itemclick", this.AlMT, this)
    },
    showPopup: function () {
        this.Rbw[XS9m]("auto");
        ImY[Ov][_0oZ][R05g](this);
        var $ = this.popup.el.style.height;
        if ($ == "" || $ == "auto")
            this.Rbw[XS9m]("auto");
        else
            this.Rbw[XS9m]("100%");
        this.Rbw[XlA](this.value)
    },
    getItem: function ($) {
        return typeof $ == "object" ? $ : this.data[$]
    },
    indexOf: function ($) {
        return this.data.indexOf($)
    },
    getAt: function ($) {
        return this.data[$]
    },
    load: function ($) {
        if (typeof $ == "string")
            this.setUrl($);
        else
            this[JmQP]($)
    },
    setData: function (data) {
        if (typeof data == "string")
            data = eval("(" + data + ")");
        if (!mini.isArray(data))
            data = [];
        this.Rbw[JmQP](data);
        this.data = this.Rbw.data;
        var vts = this.Rbw.WDb0(this.value);
        this.$g.value = vts[1]
    },
    getData: function () {
        return this.data
    },
    setUrl: function (_) {
        this.getPopup();
        this.Rbw.setUrl(_);
        this.url = this.Rbw.url;
        this.data = this.Rbw.data;
        var $ = this.Rbw.WDb0(this.value);
        this.$g.value = $[1]
    },
    getUrl: function () {
        return this.url
    },
    setValueField: function ($) {
        this[Dv] = $;
        if (this.Rbw)
            this.Rbw[HM3]($)
    },
    getValueField: function () {
        return this[Dv]
    },
    setTextField: function ($) {
        if (this.Rbw)
            this.Rbw.setTextField($);
        this[T2m] = $
    },
    getTextField: function () {
        return this[T2m]
    },
    setDisplayField: function ($) {
        this.setTextField($)
    },
    setValue: function ($) {
        if (this.value !== $) {
            var _ = this.Rbw.WDb0($);
            this.value = $;
            this.$E.value = this.value;
            this.$g.value = _[1]
        } else {
            _ = this.Rbw.WDb0($);
            this.$g.value = _[1]
        }
    },
    setMultiSelect: function ($) {
        if (this[ARtO] != $) {
            this[ARtO] = $;
            if (this.Rbw) {
                this.Rbw.setMultiSelect($);
                this.Rbw.setShowCheckBox($)
            }
        }
    },
    getMultiSelect: function () {
        return this[ARtO]
    },
    setColumns: function ($) {
        if (!mini.isArray($))
            $ = [];
        this.columns = $;
        this.Rbw[EaK]($)
    },
    getColumns: function () {
        return this.columns
    },
    showNullItem: false,
    setShowNullItem: function ($) {
        if (this.showNullItem != $) {
            this.showNullItem = $;
            this.Rbw.setShowNullItem($)
        }
    },
    getShowNullItem: function () {
        return this.showNullItem
    },
    setValueFromSelect: function ($) {
        this.valueFromSelect = $
    },
    getValueFromSelect: function () {
        return this.valueFromSelect
    },
    ZsI: function () {
        if (this.validateOnChanged)
            this[KJF]();
        var $ = this.getValue(),
		B = this.getSelecteds(),
		_ = B[0],
		A = this;
        A.fire("valuechanged", {
            value: $,
            selecteds: B,
            selected: _
        })
    },
    getSelecteds: function () {
        return this.Rbw.findItems(this.value)
    },
    getSelected: function () {
        return this.getSelecteds()[0]
    },
    AlMT: function (C) {
        var B = this.Rbw.getValue(),
		A = this.Rbw.WDb0(B),
		$ = this.getValue();
        this[XlA](B);
        this[T0B](A[1]);
        if ($ != this.getValue()) {
            var _ = this;
            setTimeout(function () {
                _.ZsI()
            }, 1)
        }
        if (!this[ARtO])
            this[LjIM]();
        this.focus()
    },
    G3: function (C) {
        this.fire("keydown", {
            htmlEvent: C
        });
        if (C.keyCode == 8 && (this[DcOq]() || this.allowInput == false))
            return false;
        if (C.keyCode == 9) {
            this[LjIM]();
            return
        }
        switch (C.keyCode) {
            case 27:
                C.preventDefault();
                if (this.isShowPopup())
                    C.stopPropagation();
                this[LjIM]();
                break;
            case 13:
                if (this.isShowPopup()) {
                    C.preventDefault();
                    C.stopPropagation();
                    var _ = this.Rbw.getFocusedIndex();
                    if (_ != -1) {
                        var $ = this.Rbw.getAt(_);
                        if (this[ARtO]);
                        else {
                            this.Rbw[BJTJ]();
                            this.Rbw[Zk]($)
                        }
                        var B = this.Rbw.getSelecteds(),
					A = this.Rbw.WDb0(B);
                        this[XlA](A[0]);
                        this[T0B](A[1]);
                        this.ZsI()
                    }
                    this[LjIM]()
                } else
                    this.fire("enter");
                break;
            case 37:
                break;
            case 38:
                _ = this.Rbw.getFocusedIndex();
                if (_ == -1) {
                    _ = 0;
                    if (!this[ARtO]) {
                        $ = this.Rbw.findItems(this.value)[0];
                        if ($)
                            _ = this.Rbw.indexOf($)
                    }
                }
                if (this.isShowPopup())
                    if (!this[ARtO]) {
                        _ -= 1;
                        if (_ < 0)
                            _ = 0;
                        this.Rbw.VNu(_, true)
                    }
            break;
        case 39:
            break;
        case 40:
            _ = this.Rbw.getFocusedIndex();
            if (_ == -1) {
                _ = 0;
                if (!this[ARtO]) {
                    $ = this.Rbw.findItems(this.value)[0];
                    if ($)
                        _ = this.Rbw.indexOf($)
                }
            }
            if (this.isShowPopup()) {
                if (!this[ARtO]) {
                    _ += 1;
                    if (_ > this.Rbw.getCount() - 1)
                        _ = this.Rbw.getCount() - 1;
                    this.Rbw.VNu(_, true)
                }
            } else {
                this[_0oZ]();
                if (!this[ARtO])
                    this.Rbw.VNu(_, true)
            }
            break;
        default:
            this.RY(this.$g.value);
            break
    }
},
F4q: function ($) {
    this.fire("keyup", {
        htmlEvent: $
    })
},
XQw: function ($) {
    this.fire("keypress", {
        htmlEvent: $
    })
},
RY: function (_) {
    var $ = this;
    setTimeout(function () {
        var A = $.$g.value;
        if (A != _)
            $.GoRN(A)
    }, 10)
},
GoRN: function (B) {
    if (this[ARtO] == true)
        return;
    var A = [];
    for (var C = 0, E = this.data.length; C < E; C++) {
        var _ = this.data[C],
			D = _[this.textField];
        if (typeof D == "string")
            if (D.indexOf(B) != -1)
                A.push(_)
}
this.Rbw[JmQP](A);
this._filtered = true;
if (B !== "" || this.isShowPopup()) {
    this[_0oZ]();
    var $ = 0;
    if (this.Rbw.getShowNullItem())
        $ = 1;
    this.Rbw.VNu($, true)
}
},
LP: function ($) {
    if (this._filtered) {
        this._filtered = false;
        if (this.Rbw.el)
            this.Rbw[JmQP](this.data)
    }
    this.fire("hidepopup")
},
Vr: function (J) {
    if (this[ARtO] == false) {
        var E = this.$g.value;
        if (this.valueFromSelect == false) {
            this[XlA](E);
            if (this.value && !this.$g.value)
                this[T0B](E);
            this.ZsI()
        } else {
            var H = this.getData(),
				F = null;
            for (var D = 0, B = H.length; D < B; D++) {
                var $ = H[D],
					I = $[this.textField];
                if (I == E) {
                    F = $;
                    break
                }
            }
            this.Rbw[XlA](F ? F[this.valueField] : "");
            var C = this.Rbw.getValue(),
				A = this.Rbw.WDb0(C),
				_ = this.getValue();
            this[XlA](C);
            this[T0B](A[1]);
            if (_ != this.getValue()) {
                var G = this;
                G.ZsI()
            }
        }
    }
},
getAttrs: function (G) {
    var E = ImY[Ov][RH][R05g](this, G);
    mini[A5ac](G, E, ["url", "data", "textField", "valueField", "displayField"]);
    mini[QRH](G, E, ["multiSelect", "showNullItem", "valueFromSelect"]);
    if (E.displayField)
        E[T2m] = E.displayField;
    var C = E[Dv] || this[Dv],
		H = E[T2m] || this[T2m];
    if (G.nodeName.toLowerCase() == "select") {
        var I = [];
        for (var F = 0, D = G.length; F < D; F++) {
            var $ = G.options[F],
				_ = {};
            _[H] = $.text;
            _[C] = $.value;
            I.push(_)
        }
        if (I.length > 0)
            E.data = I
    } else {
        var J = mini[SY0](G);
        for (F = 0, D = J.length; F < D; F++) {
            var A = J[F],
				B = jQuery(A).attr("property");
            if (!B)
                continue;
            B = B.toLowerCase();
            if (B == "columns")
                E.columns = mini._ParseColumns(A);
            else if (B == "data")
                E.data = A.innerHTML
        }
    }
    return E
}
});
H58(ImY, "combobox");
Pfk = function () {
    Pfk[Ov][FaWb][R05g](this)
};
ZPOi(Pfk, KWC, {
    format: "yyyy-MM-dd",
    popupWidth: "",
    viewDate: new Date(),
    showTime: false,
    timeFormat: "H:mm",
    showTodayButton: true,
    showClearButton: true,
    uiCls: "mini-datepicker",
    _getCalendar: function () {
        if (!Pfk._Calendar) {
            var $ = Pfk._Calendar = new AeI();
            $.setStyle("border:0;")
        }
        return Pfk._Calendar
    },
    LtD: function () {
        Pfk[Ov].LtD[R05g](this);
        this.Jot = this._getCalendar()
    },
    showPopup: function () {
        this.Jot.beginUpdate();
        this.Jot[Tlr9](this.popup._contentEl);
        this.Jot.set({
            showTime: this.showTime,
            timeFormat: this.timeFormat,
            showClearButton: this.showClearButton,
            showTodayButton: this.showTodayButton
        });
        this.Jot[XlA](this.value);
        if (this.value)
            this.Jot.setViewDate(this.value);
        else
            this.Jot.setViewDate(this.viewDate);
        if (this.Jot._target) {
            var $ = this.Jot._target;
            this.Jot.un("timechanged", $.$FuL, $);
            this.Jot.un("dateclick", $.TAJ, $);
            this.Jot.un("drawdate", $.EP0, $)
        }
        this.Jot.on("timechanged", this.$FuL, this);
        this.Jot.on("dateclick", this.TAJ, this);
        this.Jot.on("drawdate", this.EP0, this);
        this.Jot.endUpdate();
        Pfk[Ov][_0oZ][R05g](this);
        this.Jot._target = this;
        this.Jot.focus()
    },
    hidePopup: function () {
        Pfk[Ov][LjIM][R05g](this);
        this.Jot.un("timechanged", this.$FuL, this);
        this.Jot.un("dateclick", this.TAJ, this);
        this.Jot.un("drawdate", this.EP0, this)
    },
    within: function ($) {
        if (Uqe(this.el, $.target))
            return true;
        if (this.Jot[BmC]($))
            return true;
        return false
    },
    __OnPopupKeyDown: function ($) {
        if ($.keyCode == 13)
            this.TAJ();
        if ($.keyCode == 27) {
            this[LjIM]();
            this.focus()
        }
    },
    EP0: function ($) {
        this.fire("drawdate", $)
    },
    TAJ: function (A) {
        var _ = this.Jot.getValue(),
		$ = this.getFormValue();
        this[XlA](_);
        if ($ !== this.getFormValue())
            this.ZsI();
        this.focus();
        this[LjIM]()
    },
    $FuL: function (_) {
        var $ = this.Jot.getValue();
        this[XlA]($);
        this.ZsI()
    },
    setFormat: function ($) {
        if (typeof $ != "string")
            return;
        if (this.format != $) {
            this.format = $;
            this.$g.value = this.$E.value = this.getFormValue()
        }
    },
    setValue: function ($) {
        $ = mini.parseDate($);
        if (mini.isNull($))
            $ = "";
        if (mini.isDate($))
            $ = new Date($.getTime());
        if (this.value != $) {
            this.value = $;
            this.$g.value = this.$E.value = this.getFormValue()
        }
    },
    getValue: function () {
        if (!mini.isDate(this.value))
            return null;
        return this.value
    },
    getFormValue: function () {
        if (!mini.isDate(this.value))
            return "";
        return mini.formatDate(this.value, this.format)
    },
    setViewDate: function ($) {
        $ = mini.parseDate($);
        if (!mini.isDate($))
            return;
        this.viewDate = $
    },
    getViewDate: function () {
        return this.Jot.getViewDate()
    },
    setShowTime: function ($) {
        if (this.showTime != $)
            this.showTime = $
    },
    getShowTime: function () {
        return this.showTime
    },
    setTimeFormat: function ($) {
        if (this.timeFormat != $)
            this.timeFormat = $
    },
    getTimeFormat: function () {
        return this.timeFormat
    },
    setShowTodayButton: function ($) {
        this.showTodayButton = $
    },
    getShowTodayButton: function () {
        return this.showTodayButton
    },
    setShowClearButton: function ($) {
        this.showClearButton = $
    },
    getShowClearButton: function () {
        return this.showClearButton
    },
    Vr: function (B) {
        var A = this.$g.value,
		$ = mini.parseDate(A);
        if (!$ || isNaN($) || $.getFullYear() == 1970)
            $ = null;
        var _ = this.getFormValue();
        this[XlA]($);
        if ($ == null)
            this.$g.value = "";
        if (_ !== this.getFormValue())
            this.ZsI()
    },
    G3: function (_) {
        this.fire("keydown", {
            htmlEvent: _
        });
        if (_.keyCode == 8 && (this[DcOq]() || this.allowInput == false))
            return false;
        if (_.keyCode == 9) {
            this[LjIM]();
            return
        }
        switch (_.keyCode) {
            case 27:
                _.preventDefault();
                if (this.isShowPopup())
                    _.stopPropagation();
                this[LjIM]();
                break;
            case 13:
                if (this.isShowPopup()) {
                    _.preventDefault();
                    _.stopPropagation();
                    this[LjIM]()
                } else {
                    this.Vr(null);
                    var $ = this;
                    setTimeout(function () {
                        $.fire("enter")
                    }, 10)
                }
                break;
            case 37:
                break;
            case 38:
                _.preventDefault();
                break;
            case 39:
                break;
            case 40:
                _.preventDefault();
                this[_0oZ]();
                break;
            default:
                break
        }
    },
    getAttrs: function ($) {
        var _ = Pfk[Ov][RH][R05g](this, $);
        mini[A5ac]($, _, ["format", "viewDate", "timeFormat", "ondrawdate"]);
        mini[QRH]($, _, ["showTime", "showTodayButton", "showClearButton"]);
        return _
    }
});
H58(Pfk, "datepicker");
AeI = function () {
    this.viewDate = new Date(),
	this.Z_9 = [];
    AeI[Ov][FaWb][R05g](this)
};
ZPOi(AeI, Jva, {
    width: 220,
    height: 160,
    _clearBorder: false,
    viewDate: null,
    Rsj: "",
    Z_9: [],
    multiSelect: false,
    firstDayOfWeek: 0,
    todayText: "Today",
    clearText: "Clear",
    okText: "OK",
    cancelText: "Cancel",
    daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
    format: "MMM,yyyy",
    timeFormat: "H:mm",
    showTime: false,
    currentTime: true,
    rows: 1,
    columns: 1,
    headerCls: "",
    bodyCls: "",
    footerCls: "",
    AjwV: "mini-calendar-today",
    VR_: "mini-calendar-weekend",
    Ci: "mini-calendar-othermonth",
    UrU: "mini-calendar-selected",
    showHeader: true,
    showFooter: true,
    showWeekNumber: false,
    showDaysHeader: true,
    showMonthButtons: true,
    showYearButtons: true,
    showTodayButton: true,
    showClearButton: true,
    isWeekend: function (_) {
        var $ = _.getDay();
        return $ == 0 || $ == 6
    },
    getFirstDateOfMonth: function ($) {
        var $ = new Date($.getFullYear(), $.getMonth(), 1);
        return mini.getWeekStartDate($, this.firstDayOfWeek)
    },
    getShortWeek: function ($) {
        return this.daysShort[$]
    },
    uiCls: "mini-calendar",
    _create: function () {
        var C = "<tr style=\"width:100%;\"><td style=\"width:100%;\"></td></tr>";
        C += "<tr ><td><div class=\"mini-calendar-footer\">" + "<span style=\"display:inline-block;\"><input name=\"time\" class=\"mini-timespinner\" style=\"width:80px\" format=\"" + this.timeFormat + "\"/>" + "<span class=\"mini-calendar-footerSpace\"></span></span>" + "<span class=\"mini-calendar-tadayButton\">" + this.todayText + "</span>" + "<span class=\"mini-calendar-footerSpace\"></span>" + "<span class=\"mini-calendar-clearButton\">" + this.clearText + "</span>" + "<a href=\"#\" class=\"mini-calendar-focus\" style=\"position:absolute;left:-10px;top:-10px;width:0px;height:0px;outline:none\" hideFocus></a>" + "</div></td></tr>";
        var A = "<table class=\"mini-calendar\" cellpadding=\"0\" cellspacing=\"0\">" + C + "</table>",
		_ = document.createElement("div");
        _.innerHTML = A;
        this.el = _.firstChild;
        var $ = this.el.getElementsByTagName("tr"),
		B = this.el.getElementsByTagName("td");
        this.WI6 = B[0];
        this.Tqf = mini.byClass("mini-calendar-footer", this.el);
        this.timeWrapEl = this.Tqf.childNodes[0];
        this.todayButtonEl = this.Tqf.childNodes[1];
        this.footerSpaceEl = this.Tqf.childNodes[2];
        this.closeButtonEl = this.Tqf.childNodes[3];
        this._focusEl = this.Tqf.lastChild;
        mini.parse(this.Tqf);
        this.timeSpinner = mini.getbyName("time", this.el);
        this[YaK]()
    },
    focus: function () {
        try {
            this._focusEl.focus()
        } catch ($) { }

    },
    destroy: function ($) {
        this.WI6 = this.Tqf = this.timeWrapEl = this.todayButtonEl = this.footerSpaceEl = this.closeButtonEl = null;
        AeI[Ov][Yr3P][R05g](this, $)
    },
    _initEvents: function () {
        if (this.timeSpinner)
            this.timeSpinner.on("valuechanged", this.$FuL, this);
        VMPY(function () {
            Boy(this.el, "click", this.Qtm, this);
            Boy(this.el, "mousedown", this.CgJ, this);
            Boy(this.el, "keydown", this.XiOq, this)
        }, this)
    },
    getDateEl: function ($) {
        if (!$)
            return null;
        var _ = this.uid + "$" + mini.clearTime($).getTime();
        return document.getElementById(_)
    },
    within: function ($) {
        if (Uqe(this.el, $.target))
            return true;
        if (this.menuEl && Uqe(this.menuEl, $.target))
            return true;
        return false
    },
    setShowClearButton: function ($) {
        this.showClearButton = $;
        var _ = this.getButton("clear");
        if (_)
            this[YaK]()
    },
    getShowClearButton: function () {
        return this.showClearButton
    },
    setShowHeader: function ($) {
        this.showHeader = $;
        this[YaK]()
    },
    getShowHeader: function () {
        return this.showHeader
    },
    setShowFooter: function ($) {
        this[TaXk] = $;
        this[YaK]()
    },
    getShowFooter: function () {
        return this[TaXk]
    },
    setShowWeekNumber: function ($) {
        this.showWeekNumber = $;
        this[YaK]()
    },
    getShowWeekNumber: function () {
        return this.showWeekNumber
    },
    setShowDaysHeader: function ($) {
        this.showDaysHeader = $;
        this[YaK]()
    },
    getShowDaysHeader: function () {
        return this.showDaysHeader
    },
    setShowMonthButtons: function ($) {
        this.showMonthButtons = $;
        this[YaK]()
    },
    getShowMonthButtons: function () {
        return this.showMonthButtons
    },
    setShowYearButtons: function ($) {
        this.showYearButtons = $;
        this[YaK]()
    },
    getShowYearButtons: function () {
        return this.showYearButtons
    },
    setShowTodayButton: function ($) {
        this.showTodayButton = $;
        this[YaK]()
    },
    getShowTodayButton: function () {
        return this.showTodayButton
    },
    setShowClearButton: function ($) {
        this.showClearButton = $;
        this[YaK]()
    },
    getShowClearButton: function () {
        return this.showClearButton
    },
    setViewDate: function ($) {
        if (!$)
            $ = new Date();
        if (mini.isDate($))
            $ = new Date($.getTime());
        this.viewDate = $;
        this[YaK]()
    },
    getViewDate: function () {
        return this.viewDate
    },
    setSelectedDate: function ($) {
        $ = mini.parseDate($);
        if (!mini.isDate($))
            $ = "";
        else
            $ = new Date($.getTime());
        var _ = this.getDateEl(this.Rsj);
        if (_)
            ZVS(_, this.UrU);
        this.Rsj = $;
        if (this.Rsj)
            this.Rsj = mini.cloneDate(this.Rsj);
        _ = this.getDateEl(this.Rsj);
        if (_)
            E$_(_, this.UrU);
        this.fire("datechanged")
    },
    setSelectedDates: function ($) {
        if (!mini.isArray($))
            $ = [];
        this.Z_9 = $;
        this[YaK]()
    },
    getSelectedDate: function () {
        return this.Rsj ? this.Rsj : ""
    },
    setTime: function ($) {
        this.timeSpinner[XlA]($)
    },
    getTime: function () {
        return this.timeSpinner.getFormValue()
    },
    setValue: function ($) {
        this.setSelectedDate($);
        if (!$)
            $ = new Date();
        this.setTime($)
    },
    getValue: function () {
        var $ = this.Rsj;
        if ($) {
            $ = mini.clearTime($);
            if (this.showTime) {
                var _ = this.timeSpinner.getValue();
                $.setHours(_.getHours());
                $.setMinutes(_.getMinutes());
                $.setSeconds(_.getSeconds())
            }
        }
        return $ ? $ : ""
    },
    getFormValue: function () {
        var $ = this.getValue();
        if ($)
            return mini.formatDate($, "yyyy-MM-dd HH:mm:ss");
        return ""
    },
    isSelectedDate: function ($) {
        if (!$ || !this.Rsj)
            return false;
        return mini.clearTime($).getTime() == mini.clearTime(this.Rsj).getTime()
    },
    setMultiSelect: function ($) {
        this[ARtO] = $;
        this[YaK]()
    },
    getMultiSelect: function () {
        return this[ARtO]
    },
    setRows: function ($) {
        if (isNaN($))
            return;
        if ($ < 1)
            $ = 1;
        this.rows = $;
        this[YaK]()
    },
    getRows: function () {
        return this.rows
    },
    setColumns: function ($) {
        if (isNaN($))
            return;
        if ($ < 1)
            $ = 1;
        this.columns = $;
        this[YaK]()
    },
    getColumns: function () {
        return this.columns
    },
    setShowTime: function ($) {
        if (this.showTime != $) {
            this.showTime = $;
            this[SA]()
        }
    },
    getShowTime: function () {
        return this.showTime
    },
    setTimeFormat: function ($) {
        if (this.timeFormat != $) {
            this.timeSpinner.setFormat($);
            this.timeFormat = this.timeSpinner.format
        }
    },
    getTimeFormat: function () {
        return this.timeFormat
    },
    doLayout: function () {
        if (!this.canLayout())
            return;
        this.timeWrapEl.style.display = this.showTime ? "" : "none";
        this.todayButtonEl.style.display = this.showTodayButton ? "" : "none";
        this.closeButtonEl.style.display = this.showClearButton ? "" : "none";
        this.footerSpaceEl.style.display = (this.showClearButton && this.showTodayButton) ? "" : "none";
        this.Tqf.style.display = this[TaXk] ? "" : "none";
        var _ = this.WI6.firstChild,
		$ = this[Rlg]();
        if (!$) {
            _.parentNode.style.height = "100px";
            h = jQuery(this.el).height();
            h -= jQuery(this.Tqf).outerHeight();
            _.parentNode.style.height = h + "px"
        } else
            _.parentNode.style.height = "";
        mini.layout(this.Tqf)
    },
    doUpdate: function () {
        if (!this.QYky)
            return;
        var F = new Date(this.viewDate.getTime()),
		A = this.rows == 1 && this.columns == 1,
		B = 100 / this.rows,
		E = "<table class=\"mini-calendar-views\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
        for (var $ = 0, D = this.rows; $ < D; $++) {
            E += "<tr >";
            for (var C = 0, _ = this.columns; C < _; C++) {
                E += "<td style=\"height:" + B + "%\">";
                E += this.ZIwl(F, $, C);
                E += "</td>";
                F = new Date(F.getFullYear(), F.getMonth() + 1, 1)
            }
            E += "</tr>"
        }
        E += "</table>";
        this.WI6.innerHTML = E;
        mini[Smh](this.el);
        this[SA]()
    },
    ZIwl: function (R, J, C) {
        var _ = R.getMonth(),
		F = this.getFirstDateOfMonth(R),
		K = new Date(F.getTime()),
		A = mini.clearTime(new Date()).getTime(),
		D = this.value ? mini.clearTime(this.value).getTime() : -1,
		N = this.rows > 1 || this.columns > 1,
		P = "";
        P += "<table class=\"mini-calendar-view\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
        if (this.showHeader) {
            P += "<tr ><td colSpan=\"10\" class=\"mini-calendar-header\"><div class=\"mini-calendar-headerInner\">";
            if (J == 0 && C == 0) {
                P += "<div class=\"mini-calendar-prev\">";
                if (this.showYearButtons)
                    P += "<span class=\"mini-calendar-yearPrev\"></span>";
                if (this.showMonthButtons)
                    P += "<span class=\"mini-calendar-monthPrev\"></span>";
                P += "</div>"
            }
            if (J == 0 && C == this.columns - 1) {
                P += "<div class=\"mini-calendar-next\">";
                if (this.showMonthButtons)
                    P += "<span class=\"mini-calendar-monthNext\"></span>";
                if (this.showYearButtons)
                    P += "<span class=\"mini-calendar-yearNext\"></span>";
                P += "</div>"
            }
            P += "<span class=\"mini-calendar-title\">" + mini.formatDate(R, this.format);
+"</span>";
            P += "</div></td></tr>"
        }
        P += "<tr class=\"mini-calendar-daysheader\"><td class=\"mini-calendar-space\"></td>";
        if (this.showWeekNumber)
            P += "<td sclass=\"mini-calendar-weeknumber\"></td>";
        for (var L = this.firstDayOfWeek, B = L + 7; L < B; L++) {
            var O = this.getShortWeek(L);
            P += "<td valign=\"middle\">";
            P += O;
            P += "</td>";
            F = new Date(F.getFullYear(), F.getMonth(), F.getDate() + 1)
        }
        P += "<td class=\"mini-calendar-space\"></td></tr>";
        F = K;
        for (var H = 0; H <= 5; H++) {
            P += "<tr class=\"mini-calendar-days\"><td class=\"mini-calendar-space\"></td>";
            if (this.showWeekNumber) {
                var G = mini.getWeek(F.getFullYear(), F.getMonth() + 1, F.getDate());
                if (String(G).length == 1)
                    G = "0" + G;
                P += "<td class=\"mini-calendar-weeknumber\" valign=\"middle\">" + G + "</td>"
            }
            for (L = this.firstDayOfWeek, B = L + 7; L < B; L++) {
                var M = this.isWeekend(F),
				I = mini.clearTime(F).getTime(),
				$ = I == A,
				E = this.isSelectedDate(F);
                if (_ != F.getMonth() && N)
                    I = -1;
                var Q = this.IsN(F);
                P += "<td valign=\"middle\" id=\"";
                P += this.uid + "$" + I;
                P += "\" class=\"mini-calendar-date ";
                if (M)
                    P += " mini-calendar-weekend ";
                if (Q[NQ] == false)
                    P += " mini-calendar-disabled ";
                if (_ != F.getMonth() && N);
                else {
                    if (E)
                        P += " " + this.UrU + " ";
                    if ($)
                        P += " mini-calendar-today "
                }
                if (_ != F.getMonth())
                    P += " mini-calendar-othermonth ";
                P += "\">";
                if (_ != F.getMonth() && N);
                else
                    P += Q.dateHtml;
                P += "</td>";
                F = new Date(F.getFullYear(), F.getMonth(), F.getDate() + 1)
            }
            P += "<td class=\"mini-calendar-space\"></td></tr>"
        }
        P += "<tr class=\"mini-calendar-bottom\" colSpan=\"10\"><td ></td></tr>";
        P += "</table>";
        return P
    },
    IsN: function ($) {
        var _ = {
            date: $,
            dateCls: "",
            dateStyle: "",
            dateHtml: $.getDate(),
            allowSelect: true
        };
        this.fire("drawdate", _);
        return _
    },
    Fh5N: function (_, $) {
        var A = {
            date: _,
            action: $
        };
        this.fire("dateclick", A);
        this.ZsI()
    },
    menuEl: null,
    menuYear: null,
    menuSelectMonth: null,
    menuSelectYear: null,
    showMenu: function (_) {
        if (!_)
            return;
        this.hideMenu();
        this.menuYear = parseInt(this.viewDate.getFullYear() / 10) * 10;
        this.WyHmelectMonth = this.viewDate.getMonth();
        this.WyHmelectYear = this.viewDate.getFullYear();
        var A = "<div class=\"mini-calendar-menu\"></div>";
        this.menuEl = mini.append(document.body, A);
        this.updateMenu(this.viewDate);
        var $ = this.getBox();
        if (this.el.style.borderWidth == "0px")
            this.menuEl.style.border = "0";
        X7y(this.menuEl, $);
        Boy(this.menuEl, "click", this.ArD, this);
        Boy(document, "mousedown", this.DY, this)
    },
    hideMenu: function () {
        if (this.menuEl) {
            Ej(this.menuEl, "click", this.ArD, this);
            Ej(document, "mousedown", this.DY, this);
            jQuery(this.menuEl).remove();
            this.menuEl = null
        }
    },
    updateMenu: function () {
        var C = "<div class=\"mini-calendar-menu-months\">";
        for (var $ = 0, B = 12; $ < B; $++) {
            var _ = mini.getShortMonth($),
			A = "";
            if (this.WyHmelectMonth == $)
                A = "mini-calendar-menu-selected";
            C += "<a id=\"" + $ + "\" class=\"mini-calendar-menu-month " + A + "\" href=\"javascript:void(0);\" hideFocus onclick=\"return false\">" + _ + "</a>"
        }
        C += "<div style=\"clear:both;\"></div></div>";
        C += "<div class=\"mini-calendar-menu-years\">";
        for ($ = this.menuYear, B = this.menuYear + 10; $ < B; $++) {
            _ = $,
			A = "";
            if (this.WyHmelectYear == $)
                A = "mini-calendar-menu-selected";
            C += "<a id=\"" + $ + "\" class=\"mini-calendar-menu-year " + A + "\" href=\"javascript:void(0);\" hideFocus onclick=\"return false\">" + _ + "</a>"
        }
        C += "<div class=\"mini-calendar-menu-prevYear\"></div><div class=\"mini-calendar-menu-nextYear\"></div><div style=\"clear:both;\"></div></div>";
        C += "<div class=\"mini-calendar-footer\">" + "<span class=\"mini-calendar-okButton\">" + this.okText + "</span>" + "<span class=\"mini-calendar-footerSpace\"></span>" + "<span class=\"mini-calendar-cancelButton\">" + this.cancelText + "</span>" + "</div><div style=\"clear:both;\"></div>";
        this.menuEl.innerHTML = C
    },
    ArD: function (C) {
        var _ = C.target,
		B = $Rz(_, "mini-calendar-menu-month"),
		$ = $Rz(_, "mini-calendar-menu-year");
        if (B) {
            this.WyHmelectMonth = parseInt(B.id);
            this.updateMenu()
        } else if ($) {
            this.WyHmelectYear = parseInt($.id);
            this.updateMenu()
        } else if ($Rz(_, "mini-calendar-menu-prevYear")) {
            this.menuYear = this.menuYear - 1;
            this.menuYear = parseInt(this.menuYear / 10) * 10;
            this.updateMenu()
        } else if ($Rz(_, "mini-calendar-menu-nextYear")) {
            this.menuYear = this.menuYear + 11;
            this.menuYear = parseInt(this.menuYear / 10) * 10;
            this.updateMenu()
        } else if ($Rz(_, "mini-calendar-okButton")) {
            var A = new Date(this.WyHmelectYear, this.WyHmelectMonth, 1);
            this.setViewDate(A);
            this.hideMenu()
        } else if ($Rz(_, "mini-calendar-cancelButton"))
            this.hideMenu()
    },
    DY: function ($) {
        if (!$Rz($.target, "mini-calendar-menu"))
            this.hideMenu()
    },
    Qtm: function (H) {
        var G = this.viewDate;
        if (this.enabled == false)
            return;
        var C = H.target,
		F = $Rz(H.target, "mini-calendar-title");
        if ($Rz(C, "mini-calendar-monthNext")) {
            G.setMonth(G.getMonth() + 1);
            this.setViewDate(G)
        } else if ($Rz(C, "mini-calendar-yearNext")) {
            G.setFullYear(G.getFullYear() + 1);
            this.setViewDate(G)
        } else if ($Rz(C, "mini-calendar-monthPrev")) {
            G.setMonth(G.getMonth() - 1);
            this.setViewDate(G)
        } else if ($Rz(C, "mini-calendar-yearPrev")) {
            G.setFullYear(G.getFullYear() - 1);
            this.setViewDate(G)
        } else if ($Rz(C, "mini-calendar-tadayButton")) {
            var _ = new Date();
            this.setViewDate(_);
            this.setSelectedDate(_);
            if (this.currentTime) {
                var $ = new Date();
                this.setTime($)
            }
            this.Fh5N(_, "today")
        } else if ($Rz(C, "mini-calendar-clearButton")) {
            this.setSelectedDate(null);
            this.setTime(null);
            this.Fh5N(null, "clear")
        } else if (F)
            this.showMenu(F);
        var E = $Rz(H.target, "mini-calendar-date");
        if (E && !Mjm(E, "mini-calendar-disabled")) {
            var A = E.id.split("$"),
			B = parseInt(A[A.length - 1]);
            if (B == -1)
                return;
            var D = new Date(B);
            this.Fh5N(D)
        }
    },
    CgJ: function (C) {
        if (this.enabled == false)
            return;
        var B = $Rz(C.target, "mini-calendar-date");
        if (B && !Mjm(B, "mini-calendar-disabled")) {
            var $ = B.id.split("$"),
			_ = parseInt($[$.length - 1]);
            if (_ == -1)
                return;
            var A = new Date(_);
            this.setSelectedDate(A)
        }
    },
    $FuL: function ($) {
        this.fire("timechanged");
        this.ZsI()
    },
    XiOq: function (B) {
        if (this.enabled == false)
            return;
        var _ = this.getSelectedDate();
        if (!_)
            _ = new Date(this.viewDate.getTime());
        switch (B.keyCode) {
            case 27:
                break;
            case 13:
                break;
            case 37:
                _ = mini.addDate(_, -1, "D");
                break;
            case 38:
                _ = mini.addDate(_, -7, "D");
                break;
            case 39:
                _ = mini.addDate(_, 1, "D");
                break;
            case 40:
                _ = mini.addDate(_, 7, "D");
                break;
            default:
                break
        }
        var $ = this;
        if (_.getMonth() != $.viewDate.getMonth()) {
            $.setViewDate(mini.cloneDate(_));
            $.focus()
        }
        var A = this.getDateEl(_);
        if (A && Mjm(A, "mini-calendar-disabled"))
            return;
        $.setSelectedDate(_);
        if (B.keyCode == 37 || B.keyCode == 38 || B.keyCode == 39 || B.keyCode == 40)
            B.preventDefault()
    },
    ZsI: function () {
        this.fire("valuechanged")
    },
    getAttrs: function ($) {
        var _ = AeI[Ov][RH][R05g](this, $);
        mini[A5ac]($, _, ["viewDate", "rows", "columns", "ondateclick", "ondrawdate", "ondatechanged", "timeFormat", "ontimechanged", "onvaluechanged"]);
        mini[QRH]($, _, ["multiSelect", "showHeader", "showFooter", "showWeekNumber", "showDaysHeader", "showMonthButtons", "showYearButtons", "showTodayButton", "showClearButton", "showTime"]);
        return _
    }
});
H58(AeI, "calendar");
CACT = function () {
    CACT[Ov][FaWb][R05g](this)
};
ZPOi(CACT, $oc, {
    formField: true,
    width: 200,
    columns: null,
    columnWidth: 80,
    showNullItem: false,
    nullText: "",
    showEmpty: false,
    emptyText: "",
    showCheckBox: false,
    showAllCheckBox: true,
    multiSelect: false,
    _on: "mini-listbox-item",
    BB: "mini-listbox-item-hover",
    _D2: "mini-listbox-item-selected",
    uiCls: "mini-listbox",
    _create: function () {
        var $ = this.el = document.createElement("div");
        this.el.className = "mini-listbox";
        this.el.innerHTML = "<div class=\"mini-listbox-border\"><div class=\"mini-listbox-header\"></div><div class=\"mini-listbox-view\"></div><input type=\"hidden\"/></div><div class=\"mini-errorIcon\"></div>";
        this.KDCb = this.el.firstChild;
        this.OW = this.KDCb.firstChild;
        this.F_v = this.KDCb.childNodes[1];
        this.$E = this.KDCb.childNodes[2];
        this.WR = this.el.lastChild;
        this.R0F = this.F_v
    },
    destroy: function ($) {
        if (this.F_v) {
            mini[Y5P](this.F_v);
            this.F_v = null
        }
        this.KDCb = null;
        this.OW = null;
        this.F_v = null;
        this.$E = null;
        CACT[Ov][Yr3P][R05g](this, $)
    },
    _initEvents: function () {
        CACT[Ov][Ri$][R05g](this);
        VMPY(function () {
            Pv3(this.F_v, "scroll", this.DDob, this)
        }, this)
    },
    destroy: function ($) {
        if (this.F_v)
            this.F_v.onscroll = null;
        CACT[Ov][Yr3P][R05g](this, $)
    },
    setColumns: function (_) {
        if (!mini.isArray(_))
            _ = [];
        this.columns = _;
        for (var $ = 0, D = this.columns.length; $ < D; $++) {
            var B = this.columns[$];
            if (B.type) {
                if (!mini.isNull(B.header) && typeof B.header !== "function")
                    if (B.header.trim() == "")
                        delete B.header;
            var C = mini[VR](B.type);
            if (C) {
                var E = mini.copyTo({}, B);
                mini.copyTo(B, C);
                mini.copyTo(B, E)
            }
        }
        var A = parseInt(B.width);
        if (mini.isNumber(A) && String(A) == B.width)
            B.width = A + "px";
        if (mini.isNull(B.width))
            B.width = this[X3e] + "px"
    }
    this[YaK]()
},
getColumns: function () {
    return this.columns
},
doUpdate: function () {
    if (this.QYky === false)
        return;
    var S = this.columns && this.columns.length > 0;
    if (S)
        E$_(this.el, "mini-listbox-showColumns");
    else
        ZVS(this.el, "mini-listbox-showColumns");
    this.OW.style.display = S ? "" : "none";
    var I = [];
    if (S) {
        I[I.length] = "<table class=\"mini-listbox-headerInner\" cellspacing=\"0\" cellpadding=\"0\"><tr>";
        var D = this.uid + "$ck$all";
        I[I.length] = "<td class=\"mini-listbox-checkbox\"><input type=\"checkbox\" id=\"" + D + "\"></td>";
        for (var R = 0, _ = this.columns.length; R < _; R++) {
            var B = this.columns[R],
				E = B.header;
            if (mini.isNull(E))
                E = "&nbsp;";
            var A = B.width;
            if (mini.isNumber(A))
                A = A + "px";
            I[I.length] = "<td class=\"";
            if (B.headerCls)
                I[I.length] = B.headerCls;
            I[I.length] = "\" style=\"";
            if (B.headerStyle)
                I[I.length] = B.headerStyle + ";";
            if (A)
                I[I.length] = "width:" + A + ";";
            if (B.headerAlign)
                I[I.length] = "text-align:" + B.headerAlign + ";";
            I[I.length] = "\">";
            I[I.length] = E;
            I[I.length] = "</td>"
        }
        I[I.length] = "</tr></table>"
    }
    this.OW.innerHTML = I.join("");
    var I = [],
		P = this.data;
    I[I.length] = "<table class=\"mini-listbox-items\" cellspacing=\"0\" cellpadding=\"0\">";
    if (this[A8E] && P.length == 0)
        I[I.length] = "<tr><td colspan=\"20\">" + this[_wQ] + "</td></tr>";
    else {
        this.KL1G();
        for (var K = 0, G = P.length; K < G; K++) {
            var $ = P[K],
				M = -1,
				O = " ",
				J = -1,
				N = " ";
            I[I.length] = "<tr id=\"";
            I[I.length] = this.S87(K);
            I[I.length] = "\" index=\"";
            I[I.length] = K;
            I[I.length] = "\" class=\"mini-listbox-item ";
            if ($.enabled === false)
                I[I.length] = " mini-disabled ";
            M = I.length;
            I[I.length] = O;
            I[I.length] = "\" style=\"";
            J = I.length;
            I[I.length] = N;
            I[I.length] = "\">";
            var H = this.K3Y_(K),
				L = this.name,
				F = this[T03]($),
				C = "";
            if ($.enabled === false)
                C = "disabled";
            I[I.length] = "<td class=\"mini-listbox-checkbox\"><input " + C + " id=\"" + H + "\" type=\"checkbox\" ></td>";
            if (S) {
                for (R = 0, _ = this.columns.length; R < _; R++) {
                    var B = this.columns[R],
						T = this.QY8($, K, B),
						A = B.width;
                    if (typeof A == "number")
                        A = A + "px";
                    I[I.length] = "<td class=\"";
                    if (T.cellCls)
                        I[I.length] = T.cellCls;
                    I[I.length] = "\" style=\"";
                    if (T.cellStyle)
                        I[I.length] = T.cellStyle + ";";
                    if (A)
                        I[I.length] = "width:" + A + ";";
                    if (B.align)
                        I[I.length] = "text-align:" + B.align + ";";
                    I[I.length] = "\">";
                    I[I.length] = T.cellHtml;
                    I[I.length] = "</td>";
                    if (T.rowCls)
                        O = T.rowCls;
                    if (T.rowStyle)
                        N = T.rowStyle
                }
            } else {
                T = this.QY8($, K, null);
                I[I.length] = "<td class=\"";
                if (T.cellCls)
                    I[I.length] = T.cellCls;
                I[I.length] = "\" style=\"";
                if (T.cellStyle)
                    I[I.length] = T.cellStyle;
                I[I.length] = "\">";
                I[I.length] = T.cellHtml;
                I[I.length] = "</td>";
                if (T.rowCls)
                    O = T.rowCls;
                if (T.rowStyle)
                    N = T.rowStyle
            }
            I[M] = O;
            I[J] = N;
            I[I.length] = "</tr>"
        }
    }
    I[I.length] = "</table>";
    var Q = I.join("");
    this.F_v.innerHTML = Q;
    this.Hzr();
    this[SA]()
},
doLayout: function () {
    if (!this.canLayout())
        return;
    if (this.columns && this.columns.length > 0)
        E$_(this.el, "mini-listbox-showcolumns");
    else
        ZVS(this.el, "mini-listbox-showcolumns");
    if (this[Zu])
        ZVS(this.el, "mini-listbox-hideCheckBox");
    else
        E$_(this.el, "mini-listbox-hideCheckBox");
    var D = this.uid + "$ck$all",
		B = document.getElementById(D);
    if (B)
        B.style.display = this[DHm] ? "" : "none";
    var E = this[Rlg]();
    h = this[UT](true);
    _ = this[QRh](true);
    var C = _,
		F = this.F_v;
    F.style.width = _ + "px";
    if (!E) {
        var $ = Cop(this.OW);
        h = h - $;
        F.style.height = h + "px"
    } else
        F.style.height = "auto";
    if (isIE) {
        var A = this.OW.firstChild,
			G = this.F_v.firstChild;
        if (this.F_v.offsetHeight >= this.F_v.scrollHeight) {
            G.style.width = "100%";
            if (A)
                A.style.width = "100%"
        } else {
            var _ = parseInt(G.parentNode.offsetWidth - 17) + "px";
            G.style.width = _;
            if (A)
                A.style.width = _
        }
    }
    if (this.F_v.offsetHeight < this.F_v.scrollHeight)
        this.OW.style.width = (C - 17) + "px";
    else
        this.OW.style.width = "100%"
},
setShowCheckBox: function ($) {
    this[Zu] = $;
    this[SA]()
},
getShowCheckBox: function () {
    return this[Zu]
},
setShowAllCheckBox: function ($) {
    this[DHm] = $;
    this[SA]()
},
getShowAllCheckBox: function () {
    return this[DHm]
},
setShowNullItem: function ($) {
    if (this.showNullItem != $) {
        this.showNullItem = $;
        this.KL1G();
        this[YaK]()
    }
},
getShowNullItem: function () {
    return this.showNullItem
},
KL1G: function () {
    for (var _ = 0, A = this.data.length; _ < A; _++) {
        var $ = this.data[_];
        if ($.__NullItem) {
            this.data.removeAt(_);
            break
        }
    }
    if (this.showNullItem) {
        $ = {
            __NullItem: true
        };
        $[this.textField] = this.nullText;
        $[this.valueField] = "";
        this.data.insert(0, $)
    }
},
removeAll: function () {
    var $ = this.getData();
    this.removeItems($)
},
addItems: function (_, $) {
    if (!mini.isArray(_))
        return;
    if (mini.isNull($))
        $ = this.data.length;
    this.data.insertRange($, _);
    this[YaK]()
},
addItem: function (_, $) {
    if (!_)
        return;
    if (this.data.indexOf(_) != -1)
        return;
    if (mini.isNull($))
        $ = this.data.length;
    this.data.insert($, _);
    this[YaK]()
},
removeItems: function ($) {
    if (!mini.isArray($))
        return;
    this.data.removeRange($);
    this.MVO();
    this[YaK]()
},
removeItem: function (_) {
    var $ = this.data.indexOf(_);
    if ($ != -1) {
        this.data.removeAt($);
        this.MVO();
        this[YaK]()
    }
},
moveItem: function (_, $) {
    if (!_ || !mini.isNumber($))
        return;
    if ($ < 0)
        $ = 0;
    if ($ > this.data.length)
        $ = this.data.length;
    this.data.remove(_);
    this.data.insert($, _);
    this[YaK]()
},
QY8: function (_, $, C) {
    var A = C ? _[C.field] : this[IC0](_),
		D = {
		    sender: this,
		    index: $,
		    rowIndex: $,
		    record: _,
		    item: _,
		    column: C,
		    field: C ? C.field : null,
		    value: A,
		    cellHtml: A,
		    rowCls: null,
		    cellCls: C ? (C.cellCls || "") : "",
		    rowStyle: null,
		    cellStyle: C ? (C.cellStyle || "") : ""
		};
    if (C) {
        if (C.dateFormat)
            if (mini.isDate(D.value))
                D.cellHtml = mini.formatDate(A, C.dateFormat);
            else
                D.cellHtml = A;
    var B = C.renderer;
    if (B) {
        fn = typeof B == "function" ? B : window[B];
        if (fn)
            D.cellHtml = fn[R05g](C, D)
    }
}
this.fire("drawcell", D);
if (D.cellHtml === null || D.cellHtml === undefined || D.cellHtml === "")
    D.cellHtml = "&nbsp;";
return D
},
DDob: function ($) {
    this.OW.scrollLeft = this.F_v.scrollLeft
},
Qtm: function (C) {
    var A = this.uid + "$ck$all";
    if (C.target.id == A) {
        var _ = document.getElementById(A);
        if (_) {
            var B = _.checked,
				$ = this.getValue();
            if (B)
                this.selectAll();
            else
                this[BJTJ]();
            this.GyS();
            if ($ != this.getValue()) {
                this.ZsI();
                this.fire("itemclick", {
                    htmlEvent: C
                })
            }
        }
        return
    }
    this.ZtcL(C, "Click")
},
getAttrs: function (_) {
    var E = CACT[Ov][RH][R05g](this, _);
    mini[QRH](_, E, ["showCheckBox", "showAllCheckBox", "showNullItem"]);
    if (_.nodeName.toLowerCase() != "select") {
        var C = mini[SY0](_);
        for (var $ = 0, D = C.length; $ < D; $++) {
            var B = C[$],
				A = jQuery(B).attr("property");
            if (!A)
                continue;
            A = A.toLowerCase();
            if (A == "columns")
                E.columns = mini._ParseColumns(B);
            else if (A == "data")
                E.data = B.innerHTML
        }
    }
    return E
}
});
H58(CACT, "listbox");
VD = function () {
    VD[Ov][FaWb][R05g](this)
};
ZPOi(VD, $oc, {
    formField: true,
    multiSelect: true,
    repeatItems: 0,
    repeatLayout: "none",
    repeatDirection: "horizontal",
    _on: "mini-checkboxlist-item",
    BB: "mini-checkboxlist-item-hover",
    _D2: "mini-checkboxlist-item-selected",
    $m: "mini-checkboxlist-table",
    JoV1: "mini-checkboxlist-td",
    VX: "checkbox",
    uiCls: "mini-checkboxlist",
    _create: function () {
        var $ = this.el = document.createElement("div");
        this.el.className = this.uiCls;
        this.el.innerHTML = "<div class=\"mini-list-inner\"></div><div class=\"mini-errorIcon\"></div><input type=\"hidden\" />";
        this.WI6 = this.el.firstChild;
        this.$E = this.el.lastChild;
        this.WR = this.el.childNodes[1]
    },
    Lpfq: function () {
        var B = [];
        if (this.repeatItems > 0) {
            if (this.repeatDirection == "horizontal") {
                var D = [];
                for (var C = 0, E = this.data.length; C < E; C++) {
                    var A = this.data[C];
                    if (D.length == this.repeatItems) {
                        B.push(D);
                        D = []
                    }
                    D.push(A)
                }
                B.push(D)
            } else {
                var _ = this.repeatItems > this.data.length ? this.data.length : this.repeatItems;
                for (C = 0, E = _; C < E; C++)
                    B.push([]);
                for (C = 0, E = this.data.length; C < E; C++) {
                    var A = this.data[C],
					$ = C % this.repeatItems;
                    B[$].push(A)
                }
            }
        } else
            B = [this.data.clone()];
        return B
    },
    doUpdate: function () {
        var D = this.data,
		G = "";
        for (var A = 0, F = D.length; A < F; A++) {
            var _ = D[A];
            _._i = A
        }
        if (this.repeatLayout == "flow") {
            var $ = this.Lpfq();
            for (A = 0, F = $.length; A < F; A++) {
                var C = $[A];
                for (var E = 0, B = C.length; E < B; E++) {
                    _ = C[E];
                    G += this.H2gS(_, _._i)
                }
                if (A != F - 1)
                    G += "<br/>"
            }
        } else if (this.repeatLayout == "table") {
            $ = this.Lpfq();
            G += "<table class=\"" + this.$m + "\" cellpadding=\"0\" cellspacing=\"1\">";
            for (A = 0, F = $.length; A < F; A++) {
                C = $[A];
                G += "<tr>";
                for (E = 0, B = C.length; E < B; E++) {
                    _ = C[E];
                    G += "<td class=\"" + this.JoV1 + "\">";
                    G += this.H2gS(_, _._i);
                    G += "</td>"
                }
                G += "</tr>"
            }
            G += "</table>"
        } else
            for (A = 0, F = D.length; A < F; A++) {
                _ = D[A];
                G += this.H2gS(_, A)
            }
    this.WI6.innerHTML = G;
    for (A = 0, F = D.length; A < F; A++) {
        _ = D[A];
        delete _._i
    }
},
H2gS: function (_, $) {
    var F = this.YF(_, $),
		E = this.S87($),
		A = this.K3Y_($),
		C = this[T03](_),
		B = "",
		D = "<div id=\"" + E + "\" index=\"" + $ + "\" class=\"" + this._on + " ";
    if (_.enabled === false) {
        D += " mini-disabled ";
        B = "disabled"
    }
    D += F.itemCls + "\" style=\"" + F.itemStyle + "\"><input " + B + " value=\"" + C + "\" id=\"" + A + "\" type=\"" + this.VX + "\" onclick=\"return false;\"/><label for=\"" + A + "\" onclick=\"return false;\">";
    D += F.itemHtml + "</label></div>";
    return D
},
YF: function (_, $) {
    var A = this[IC0](_),
		B = {
		    index: $,
		    item: _,
		    itemHtml: A,
		    itemCls: "",
		    itemStyle: ""
		};
    this.fire("drawitem", B);
    if (B.itemHtml === null || B.itemHtml === undefined)
        B.itemHtml = "";
    return B
},
setRepeatItems: function ($) {
    $ = parseInt($);
    if (isNaN($))
        $ = 0;
    if (this.repeatItems != $) {
        this.repeatItems = $;
        this[YaK]()
    }
},
getRepeatItems: function () {
    return this.repeatItems
},
setRepeatLayout: function ($) {
    if ($ != "flow" && $ != "table")
        $ = "none";
    if (this.repeatLayout != $) {
        this.repeatLayout = $;
        this[YaK]()
    }
},
getRepeatLayout: function () {
    return this.repeatLayout
},
setRepeatDirection: function ($) {
    if ($ != "vertical")
        $ = "horizontal";
    if (this.repeatDirection != $) {
        this.repeatDirection = $;
        this[YaK]()
    }
},
getRepeatDirection: function () {
    return this.repeatDirection
},
getAttrs: function (_) {
    var D = VD[Ov][RH][R05g](this, _),
		C = jQuery(_),
		$ = parseInt(C.attr("repeatItems"));
    if (!isNaN($))
        D.repeatItems = $;
    var B = C.attr("repeatLayout");
    if (B)
        D.repeatLayout = B;
    var A = C.attr("repeatDirection");
    if (A)
        D.repeatDirection = A;
    return D
}
});
H58(VD, "checkboxlist");
WsC = function () {
    WsC[Ov][FaWb][R05g](this)
};
ZPOi(WsC, VD, {
    multiSelect: false,
    _on: "mini-radiobuttonlist-item",
    BB: "mini-radiobuttonlist-item-hover",
    _D2: "mini-radiobuttonlist-item-selected",
    $m: "mini-radiobuttonlist-table",
    JoV1: "mini-radiobuttonlist-td",
    VX: "radio",
    uiCls: "mini-radiobuttonlist"
});
H58(WsC, "radiobuttonlist");
Hf = function () {
    this.data = [];
    Hf[Ov][FaWb][R05g](this)
};
ZPOi(Hf, KWC, {
    text: "",
    value: "",
    autoCheckParent: false,
    expandOnLoad: false,
    valueField: "id",
    textField: "text",
    nodesField: "children",
    delimiter: ",",
    multiSelect: false,
    data: [],
    url: "",
    allowInput: false,
    showTreeIcon: false,
    showTreeLines: true,
    resultAsTree: false,
    parentField: "pid",
    checkRecursive: false,
    showFolderCheckBox: false,
    popupWidth: 200,
    popupMaxHeight: 250,
    popupMinWidth: 100,
    set: function (B) {
        if (typeof B == "string")
            return this;
        var $ = B.value;
        delete B.value;
        var _ = B.text;
        delete B.text;
        var C = B.url;
        delete B.url;
        var A = B.data;
        delete B.data;
        Hf[Ov].set[R05g](this, B);
        if (!mini.isNull(A))
            this[JmQP](A);
        if (!mini.isNull(C))
            this.setUrl(C);
        if (!mini.isNull($))
            this[XlA]($);
        if (!mini.isNull(_))
            this[T0B](_);
        return this
    },
    uiCls: "mini-treeselect",
    LtD: function () {
        Hf[Ov].LtD[R05g](this);
        this.tree = new Yps7();
        this.tree.setShowTreeIcon(true);
        this.tree.setStyle("border:0;width:100%;height:100%;");
        this.tree.setResultAsTree(this[WFK]);
        this.tree[Tlr9](this.popup._contentEl);
        this.tree.on("nodeclick", this.WvA, this);
        this.tree.on("nodecheck", this.T0h, this);
        this.tree.on("expand", this.Guhy, this);
        this.tree.on("collapse", this.KDs, this);
        this.tree.on("beforenodecheck", this._M, this);
        this.tree.on("beforenodeselect", this.D1, this);
        this.tree.allowAnim = false
    },
    _M: function ($) {
        $.tree = $.sender;
        this.fire("beforenodecheck", $)
    },
    D1: function ($) {
        $.tree = $.sender;
        this.fire("beforenodeselect", $)
    },
    Guhy: function ($) {
        this[_0oZ]()
    },
    KDs: function ($) {
        this[_0oZ]()
    },
    showPopup: function () {
        this.tree[XS9m]("auto");
        var $ = this.popup.el.style.height;
        if ($ == "" || $ == "auto")
            this.tree[XS9m]("auto");
        else
            this.tree[XS9m]("100%");
        Hf[Ov][_0oZ][R05g](this);
        this.tree[XlA](this.value)
    },
    LP: function ($) {
        this.tree.clearFilter();
        this.fire("hidepopup")
    },
    getItem: function ($) {
        return typeof $ == "object" ? $ : this.data[$]
    },
    indexOf: function ($) {
        return this.data.indexOf($)
    },
    getAt: function ($) {
        return this.data[$]
    },
    load: function ($) {
        this.tree.load($)
    },
    setData: function ($) {
        this.tree[JmQP]($);
        this.data = this.tree.data
    },
    getData: function () {
        return this.data
    },
    setUrl: function ($) {
        this.getPopup();
        this.tree.setUrl($);
        this.url = this.tree.url
    },
    getUrl: function () {
        return this.url
    },
    setTextField: function ($) {
        if (this.tree)
            this.tree.setTextField($);
        this[T2m] = $
    },
    getTextField: function () {
        return this[T2m]
    },
    setNodesField: function ($) {
        if (this.tree)
            this.tree.setNodesField($);
        this.nodesField = $
    },
    getNodesField: function () {
        return this.nodesField
    },
    setValue: function ($) {
        if (this.value != $) {
            var _ = this.tree.WDb0($);
            this.value = $;
            this.$E.value = $;
            this.$g.value = _[1];
            this.BQ()
        }
    },
    setMultiSelect: function ($) {
        if (this[ARtO] != $) {
            this[ARtO] = $;
            this.tree.setShowCheckBox($);
            this.tree.setAllowSelect(!$);
            this.tree.setEnableHotTrack(!$)
        }
    },
    getMultiSelect: function () {
        return this[ARtO]
    },
    WvA: function (B) {
        if (this[ARtO])
            return;
        var _ = this.tree.getSelectedNode(),
		A = this.tree[T03](_),
		$ = this.getValue();
        this[XlA](A);
        if ($ != this.getValue())
            this.ZsI();
        this[LjIM]()
    },
    T0h: function (A) {
        if (!this[ARtO])
            return;
        var _ = this.tree.getValue(),
		$ = this.getValue();
        this[XlA](_);
        if ($ != this.getValue())
            this.ZsI()
    },
    G3: function (_) {
        this.fire("keydown", {
            htmlEvent: _
        });
        if (_.keyCode == 8 && (this[DcOq]() || this.allowInput == false))
            return false;
        if (_.keyCode == 9) {
            this[LjIM]();
            return
        }
        switch (_.keyCode) {
            case 27:
                if (this.isShowPopup())
                    _.stopPropagation();
                this[LjIM]();
                break;
            case 13:
                break;
            case 37:
                break;
            case 38:
                _.preventDefault();
                break;
            case 39:
                break;
            case 40:
                _.preventDefault();
                this[_0oZ]();
                break;
            default:
                var $ = this;
                setTimeout(function () {
                    $.GoRN()
                }, 10);
                break
        }
    },
    GoRN: function () {
        var _ = this[T2m],
		$ = this.$g.value.toLowerCase();
        this.tree.filter(function (B) {
            var A = String(B[_] ? B[_] : "").toLowerCase();
            if (A.indexOf($) != -1)
                return true;
            else
                return false
        });
        this.tree.expandAll();
        this[_0oZ]()
    },
    setCheckRecursive: function ($) {
        this[Tj] = $;
        if (this.tree)
            this.tree.setCheckRecursive($)
    },
    getCheckRecursive: function () {
        return this[Tj]
    },
    setResultAsTree: function ($) {
        this[WFK] = $;
        if (this.tree)
            this.tree.setResultAsTree($)
    },
    getResultAsTree: function () {
        return this[WFK]
    },
    setParentField: function ($) {
        this[_v3e] = $;
        if (this.tree)
            this.tree.setParentField($)
    },
    getParentField: function () {
        return this[_v3e]
    },
    setValueField: function ($) {
        if (this.tree)
            this.tree.setIdField($);
        this[Dv] = $
    },
    getValueField: function () {
        return this[Dv]
    },
    setShowTreeIcon: function ($) {
        this[HGX] = $;
        if (this.tree)
            this.tree.setShowTreeIcon($)
    },
    getShowTreeIcon: function () {
        return this[HGX]
    },
    setShowTreeLines: function ($) {
        this[_l3N] = $;
        if (this.tree)
            this.tree.setShowTreeLines($)
    },
    getShowTreeLines: function () {
        return this[_l3N]
    },
    setShowFolderCheckBox: function ($) {
        this[F$q] = $;
        if (this.tree)
            this.tree.setShowFolderCheckBox($)
    },
    getShowFolderCheckBox: function () {
        return this[F$q]
    },
    setAutoCheckParent: function ($) {
        this.autoCheckParent = $;
        if (this.tree)
            this.tree.setAutoCheckParent($)
    },
    getAutoCheckParent: function () {
        return this.autoCheckParent
    },
    setExpandOnLoad: function ($) {
        this.expandOnLoad = $;
        if (this.tree)
            this.tree.setExpandOnLoad($)
    },
    getExpandOnLoad: function () {
        return this.expandOnLoad
    },
    getAttrs: function (_) {
        var A = ImY[Ov][RH][R05g](this, _);
        mini[A5ac](_, A, ["url", "data", "textField", "valueField", "nodesField", "parentField", "onbeforenodecheck", "onbeforenodeselect", "expandOnLoad"]);
        mini[QRH](_, A, ["multiSelect", "resultAsTree", "checkRecursive", "showTreeIcon", "showTreeLines", "showFolderCheckBox", "autoCheckParent"]);
        if (A.expandOnLoad) {
            var $ = parseInt(A.expandOnLoad);
            if (mini.isNumber($))
                A.expandOnLoad = $;
            else
                A.expandOnLoad = A.expandOnLoad == "true" ? true : false
        }
        return A
    }
});
H58(Hf, "TreeSelect");
Lsdv = function () {
    Lsdv[Ov][FaWb][R05g](this);
    this[XlA](this[_a])
};
ZPOi(Lsdv, B6, {
    value: 0,
    minValue: 0,
    maxValue: 100,
    increment: 1,
    decimalPlaces: 0,
    set: function (_) {
        if (typeof _ == "string")
            return this;
        var $ = _.value;
        delete _.value;
        Lsdv[Ov].set[R05g](this, _);
        if (!mini.isNull($))
            this[XlA]($);
        return this
    },
    uiCls: "mini-spinner",
    _RaGHtml: function () {
        var $ = "onmouseover=\"E$_(this,'" + this.SKS + "');\" " + "onmouseout=\"ZVS(this,'" + this.SKS + "');\"";
        return "<span class=\"mini-buttonedit-button\" " + $ + "><span class=\"mini-buttonedit-up\"><span></span></span><span class=\"mini-buttonedit-down\"><span></span></span></span>"
    },
    _initEvents: function () {
        Lsdv[Ov][Ri$][R05g](this);
        VMPY(function () {
            this.on("buttonmousedown", this.Mi, this);
            Boy(this.el, "mousewheel", this._Dr, this)
        }, this)
    },
    QA8v: function () {
        if (this[_a] > this[Pfu])
            this[Pfu] = this[_a] + 100;
        if (this.value < this[_a])
            this[XlA](this[_a]);
        if (this.value > this[Pfu])
            this[XlA](this[Pfu])
    },
    setValue: function ($) {
        $ = parseFloat($);
        if (isNaN($))
            $ = this[_a];
        $ = parseFloat($.toFixed(this[IEr]));
        if (this.value != $) {
            this.value = $;
            this.QA8v();
            this.$g.value = this.$E.value = this.getFormValue()
        } else
            this.$g.value = this.getFormValue()
    },
    setMaxValue: function ($) {
        $ = parseFloat($);
        if (isNaN($))
            return;
        $ = parseFloat($.toFixed(this[IEr]));
        if (this[Pfu] != $) {
            this[Pfu] = $;
            this.QA8v()
        }
    },
    getMaxValue: function ($) {
        return this[Pfu]
    },
    setMinValue: function ($) {
        $ = parseFloat($);
        if (isNaN($))
            return;
        $ = parseFloat($.toFixed(this[IEr]));
        if (this[_a] != $) {
            this[_a] = $;
            this.QA8v()
        }
    },
    getMinValue: function ($) {
        return this[_a]
    },
    setIncrement: function ($) {
        $ = parseFloat($);
        if (isNaN($))
            return;
        if (this[YI4] != $)
            this[YI4] = $
    },
    getIncrement: function ($) {
        return this[YI4]
    },
    setDecimalPlaces: function ($) {
        $ = parseInt($);
        if (isNaN($) || $ < 0)
            return;
        this[IEr] = $
    },
    getDecimalPlaces: function ($) {
        return this[IEr]
    },
    Hqt: null,
    CjP: function (D, B, C) {
        this.C3B();
        this[XlA](this.value + D);
        var A = this,
		_ = C,
		$ = new Date();
        this.Hqt = setInterval(function () {
            A[XlA](A.value + D);
            A.ZsI();
            C--;
            if (C == 0 && B > 50)
                A.CjP(D, B - 100, _ + 3);
            var E = new Date();
            if (E - $ > 500)
                A.C3B();
            $ = E
        }, B);
        Boy(document, "mouseup", this.$eg, this)
    },
    C3B: function () {
        clearInterval(this.Hqt);
        this.Hqt = null
    },
    Mi: function ($) {
        this._DownValue = this.getFormValue();
        if ($.spinType == "up")
            this.CjP(this.increment, 230, 2);
        else
            this.CjP(-this.increment, 230, 2)
    },
    G3: function (_) {
        Lsdv[Ov].G3[R05g](this, _);
        var $ = mini.Keyboard;
        switch (_.keyCode) {
            case $.Top:
                this[XlA](this.value + this[YI4]);
                this.ZsI();
                break;
            case $.Bottom:
                this[XlA](this.value - this[YI4]);
                this.ZsI();
                break
        }
    },
    _Dr: function (A) {
        if (this[DcOq]())
            return;
        var $ = A.wheelDelta;
        if (mini.isNull($))
            $ = -A.detail * 24;
        var _ = this[YI4];
        if ($ < 0)
            _ = -_;
        this[XlA](this.value + _);
        this.ZsI();
        return false
    },
    $eg: function ($) {
        this.C3B();
        Ej(document, "mouseup", this.$eg, this);
        if (this._DownValue != this.getFormValue())
            this.ZsI()
    },
    Vr: function (A) {
        var _ = this.getValue(),
		$ = parseFloat(this.$g.value);
        this[XlA]($);
        if (_ != this.getValue())
            this.ZsI()
    },
    getAttrs: function ($) {
        var _ = Lsdv[Ov][RH][R05g](this, $);
        mini[A5ac]($, _, ["minValue", "maxValue", "increment", "decimalPlaces"]);
        return _
    }
});
H58(Lsdv, "spinner");
Lsb = function () {
    Lsb[Ov][FaWb][R05g](this);
    this[XlA]("00:00:00")
};
ZPOi(Lsb, B6, {
    value: null,
    format: "H:mm:ss",
    uiCls: "mini-timespinner",
    _RaGHtml: function () {
        var $ = "onmouseover=\"E$_(this,'" + this.SKS + "');\" " + "onmouseout=\"ZVS(this,'" + this.SKS + "');\"";
        return "<span class=\"mini-buttonedit-button\" " + $ + "><span class=\"mini-buttonedit-up\"><span></span></span><span class=\"mini-buttonedit-down\"><span></span></span></span>"
    },
    _initEvents: function () {
        Lsb[Ov][Ri$][R05g](this);
        VMPY(function () {
            this.on("buttonmousedown", this.Mi, this);
            Boy(this.el, "mousewheel", this._Dr, this);
            Boy(this.$g, "keydown", this.XiOq, this)
        }, this)
    },
    setFormat: function ($) {
        if (typeof $ != "string")
            return;
        var _ = ["H:mm:ss", "HH:mm:ss", "H:mm", "HH:mm", "H", "HH", "mm:ss"];
        if (_.indexOf($) == -1)
            return;
        if (this.format != $) {
            this.format = $;
            this.$g.value = this.getFormattedValue()
        }
    },
    getFormat: function () {
        return this.format
    },
    setValue: function ($) {
        $ = mini.parseTime($, this.format);
        if (!$)
            $ = mini.parseTime("00:00:00", this.format);
        if (mini.isDate($))
            $ = new Date($.getTime());
        if (mini.formatDate(this.value, "H:mm:ss") != mini.formatDate($, "H:mm:ss")) {
            this.value = $;
            this.$g.value = this.getFormattedValue();
            this.$E.value = this.getFormValue()
        }
    },
    getValue: function () {
        return this.value == null ? null : new Date(this.value.getTime())
    },
    getFormValue: function () {
        if (!this.value)
            return "";
        return mini.formatDate(this.value, "H:mm:ss")
    },
    getFormattedValue: function () {
        if (!this.value)
            return "";
        return mini.formatDate(this.value, this.format)
    },
    _OA3: function (D, C) {
        var $ = this.getValue();
        if ($)
            switch (C) {
            case "hours":
                var A = $.getHours() + D;
                if (A > 23)
                    A = 23;
                if (A < 0)
                    A = 0;
                $.setHours(A);
                break;
            case "minutes":
                var B = $.getMinutes() + D;
                if (B > 59)
                    B = 59;
                if (B < 0)
                    B = 0;
                $.setMinutes(B);
                break;
            case "seconds":
                var _ = $.getSeconds() + D;
                if (_ > 59)
                    _ = 59;
                if (_ < 0)
                    _ = 0;
                $.setSeconds(_);
                break
        }
        else
            $ = "00:00:00";
        this[XlA]($)
    },
    Hqt: null,
    CjP: function (D, B, C) {
        this.C3B();
        this._OA3(D, this.NBb);
        var A = this,
		_ = C,
		$ = new Date();
        this.Hqt = setInterval(function () {
            A._OA3(D, A.NBb);
            C--;
            if (C == 0 && B > 50)
                A.CjP(D, B - 100, _ + 3);
            var E = new Date();
            if (E - $ > 500)
                A.C3B();
            $ = E
        }, B);
        Boy(document, "mouseup", this.$eg, this)
    },
    C3B: function () {
        clearInterval(this.Hqt);
        this.Hqt = null
    },
    Mi: function ($) {
        this._DownValue = this.getFormValue();
        this.NBb = "hours";
        if ($.spinType == "up")
            this.CjP(1, 230, 2);
        else
            this.CjP(-1, 230, 2)
    },
    $eg: function ($) {
        this.C3B();
        Ej(document, "mouseup", this.$eg, this);
        if (this._DownValue != this.getFormValue())
            this.ZsI()
    },
    Vr: function (_) {
        var $ = this.getFormValue();
        this[XlA](this.$g.value);
        if ($ != this.getFormValue())
            this.ZsI()
    },
    getAttrs: function ($) {
        var _ = Lsb[Ov][RH][R05g](this, $);
        mini[A5ac]($, _, ["format"]);
        return _
    }
});
H58(Lsb, "timespinner");
Pw = function () {
    Pw[Ov][FaWb][R05g](this);
    this.on("validation", this.AF, this)
};
ZPOi(Pw, B6, {
    width: 180,
    buttonText: "\u6d4f\u89c8...",
    _buttonWidth: 56,
    limitType: "",
    limitTypeErrorText: "\u4e0a\u4f20\u6587\u4ef6\u683c\u5f0f\u4e3a\uff1a",
    allowInput: false,
    readOnly: true,
    JMrO: 0,
    uiCls: "mini-htmlfile",
    _create: function () {
        Pw[Ov][P1V][R05g](this);
        this.VNc = mini.append(this.el, "<input type=\"file\" hideFocus class=\"mini-htmlfile-file\" name=\"" + this.name + "\" ContentEditable=false/>");
        Boy(this.el, "mousemove", this._jK, this);
        Boy(this.VNc, "change", this.GQj$, this)
    },
    _RaGHtml: function () {
        var $ = "onmouseover=\"E$_(this,'" + this.SKS + "');\" " + "onmouseout=\"ZVS(this,'" + this.SKS + "');\"";
        return "<span class=\"mini-buttonedit-button\" " + $ + ">" + this.buttonText + "</span>"
    },
    GQj$: function ($) {
        this.value = this.$g.value = this.VNc.value;
        this.ZsI()
    },
    _jK: function (B) {
        var A = B.pageX,
		_ = B.pageY,
		$ = L05(this.el);
        A = (A - $.x - 5);
        _ = (_ - $.y - 5);
        if (this.enabled == false) {
            A = -20;
            _ = -20
        }
        this.VNc.style.left = A + "px";
        this.VNc.style.top = _ + "px"
    },
    AF: function (B) {
        var A = B.value.split("."),
		$ = "*." + A[A.length - 1],
		_ = this.limitType.split(";");
        if (_.length > 0 && _.indexOf($) == -1) {
            B.errorText = this.limitTypeErrorText + this.limitType;
            B.isValid = false
        }
    },
    setName: function ($) {
        this.name = $;
        mini.setAttr(this.VNc, "name", this.name)
    },
    getValue: function () {
        return this.$g.value
    },
    setButtonText: function ($) {
        this.buttonText = $
    },
    getButtonText: function () {
        return this.buttonText
    },
    setLimitType: function ($) {
        this.limitType = $
    },
    getLimitType: function () {
        return this.limitType
    },
    getAttrs: function ($) {
        var _ = Pw[Ov][RH][R05g](this, $);
        mini[A5ac]($, _, ["limitType", "buttonText", "limitTypeErrorText"]);
        return _
    }
});
H58(Pw, "htmlfile");
JvM = function ($) {
    JvM[Ov][FaWb][R05g](this, $);
    this.on("validation", this.AF, this)
};
ZPOi(JvM, B6, {
    width: 180,
    buttonText: "\u6d4f\u89c8...",
    _buttonWidth: 56,
    limitTypeErrorText: "\u4e0a\u4f20\u6587\u4ef6\u683c\u5f0f\u4e3a\uff1a",
    readOnly: true,
    JMrO: 0,
    limitSize: "",
    limitType: "",
    typesDescription: "\u4e0a\u4f20\u6587\u4ef6\u683c\u5f0f",
    uploadLimit: 0,
    queueLimit: "",
    flashUrl: "",
    uploadUrl: "",
    uploadOnSelect: false,
    uiCls: "mini-fileupload",
    _create: function () {
        JvM[Ov][P1V][R05g](this);
        E$_(this.el, "mini-htmlfile");
        this.VNc = mini.append(this.el, "<span></span>");
        this.uploadEl = this.VNc;
        Boy(this.el, "mousemove", this._jK, this)
    },
    _RaGHtml: function () {
        var $ = "onmouseover=\"E$_(this,'" + this.SKS + "');\" " + "onmouseout=\"ZVS(this,'" + this.SKS + "');\"";
        return "<span class=\"mini-buttonedit-button\" " + $ + ">" + this.buttonText + "</span>"
    },
    destroy: function ($) {
        if (this.WI6) {
            mini[Y5P](this.WI6);
            this.WI6 = null
        }
        JvM[Ov][Yr3P][R05g](this, $)
    },
    _jK: function (A) {
        var $ = this;
        if (this.enabled == false)
            return;
        if (!this.swfUpload) {
            var B = new SWFUpload({
                file_post_name: this.name,
                upload_url: $.uploadUrl,
                flash_url: $.flashUrl,
                file_size_limit: $.limitSize,
                file_types: $.limitType,
                file_types_description: $.typesDescription,
                file_upload_limit: parseInt($.uploadLimit),
                file_queue_limit: $.queueLimit,
                file_queued_handler: mini.createDelegate(this.__on_file_queued, this),
                upload_error_handler: mini.createDelegate(this.__on_upload_error, this),
                upload_success_handler: mini.createDelegate(this.__on_upload_success, this),
                upload_complete_handler: mini.createDelegate(this.__on_upload_complete, this),
                button_placeholder: $.uploadEl,
                button_width: 1000,
                button_height: 20,
                button_window_mode: "transparent",
                debug: false
            });
            B.flashReady();
            this.swfUpload = B;
            var _ = this.swfUpload.movieElement;
            _.style.zIndex = 1000;
            _.style.position = "absolute";
            _.style.left = "0px";
            _.style.top = "0px";
            _.style.width = "100%";
            _.style.height = "20px"
        }
    },
    setLimitSize: function ($) {
        this.limitSize = $
    },
    setLimitType: function ($) {
        this.limitType = $
    },
    setTypesDescription: function ($) {
        this.typesDescription = $
    },
    setUploadLimit: function ($) {
        this.uploadLimit = $
    },
    setQueueLimit: function ($) {
        this.queueLimit = $
    },
    setFlashUrl: function ($) {
        this.flashUrl = $
    },
    setUploadUrl: function ($) {
        this.uploadUrl = $
    },
    setName: function ($) {
        this.name = $
    },
    startUpload: function ($) {
        if (this.swfUpload)
            this.swfUpload.startUpload()
    },
    __on_file_queued: function ($) {
        if (this.uploadOnSelect)
            this.swfUpload.startUpload();
        this[T0B]($.name)
    },
    __on_upload_success: function (_, $) {
        var A = {
            file: _,
            serverData: $
        };
        this.fire("uploadsuccess", A)
    },
    __on_upload_error: function ($) {
        var _ = {
            file: $
        };
        this.fire("uploaderror", _)
    },
    __on_upload_complete: function ($) {
        this.fire("uploadcomplete", $)
    },
    __fileError: function () { },
    getAttrs: function ($) {
        var _ = JvM[Ov][RH][R05g](this, $);
        mini[A5ac]($, _, ["limitType", "limitSize", "flashUrl", "uploadUrl", "uploadLimit", "onuploadsuccess", "onuploaderror", "onuploadcomplete"]);
        mini[QRH]($, _, ["uploadOnSelect"]);
        return _
    }
});
H58(JvM, "fileupload");
Rs = function () {
    this.data = [];
    Rs[Ov][FaWb][R05g](this);
    Boy(this.$g, "mouseup", this.JE, this)
};
ZPOi(Rs, KWC, {
    allowInput: true,
    valueField: "id",
    textField: "text",
    delimiter: ",",
    multiSelect: false,
    data: [],
    grid: null,
    uiCls: "mini-lookup",
    destroy: function ($) {
        if (this.grid) {
            this.grid.un("rowclick", this.__OnGridRowClickChanged, this);
            this.grid.un("load", this.MbH, this);
            this.grid = null
        }
        Rs[Ov][Yr3P][R05g](this, $)
    },
    setMultiSelect: function ($) {
        this[ARtO] = $;
        if (this.grid)
            this.grid.setMultiSelect($)
    },
    setGrid: function ($) {
        if (typeof $ == "string") {
            mini.parse($);
            $ = mini.get($)
        }
        this.grid = mini.getAndCreate($);
        if (this.grid) {
            this.grid.setMultiSelect(this[ARtO]);
            this.grid.setCheckSelectOnLoad(false);
            this.grid.on("rowclick", this.__OnGridRowClickChanged, this);
            this.grid.on("load", this.MbH, this)
        }
    },
    getGrid: function () {
        return this.grid
    },
    setValueField: function ($) {
        this[Dv] = $
    },
    getValueField: function () {
        return this[Dv]
    },
    setTextField: function ($) {
        this[T2m] = $
    },
    getTextField: function () {
        return this[T2m]
    },
    getItemValue: function ($) {
        return String($[this.valueField])
    },
    getItemText: function ($) {
        var _ = $[this.textField];
        return mini.isNull(_) ? "" : String(_)
    },
    WDb0: function (A) {
        if (mini.isNull(A))
            A = [];
        var B = [],
		C = [];
        for (var _ = 0, D = A.length; _ < D; _++) {
            var $ = A[_];
            if ($) {
                B.push(this[T03]($));
                C.push(this[IC0]($))
            }
        }
        return [B.join(this.delimiter), C.join(this.delimiter)]
    },
    DTIT: function (A) {
        var D = {};
        for (var $ = 0, B = A.length; $ < B; $++) {
            var _ = A[$],
			C = _[this.valueField];
            D[C] = _
        }
        return D
    },
    __OnGridRowClickChanged: function (G) {
        var B = this.DTIT(this.grid.getData()),
		C = this.DTIT(this.grid.getSelecteds()),
		F = this.DTIT(this.data);
        if (this[ARtO] == false) {
            F = {};
            this.data = []
        }
        var A = {};
        for (var E in F) {
            var $ = F[E];
            if (B[E])
                if (C[E]);
                else
                    A[E] = $
            }
            for (var _ = this.data.length - 1; _ >= 0; _--) {
                $ = this.data[_],
			E = $[this.valueField];
                if (A[E])
                    this.data.removeAt(_)
            }
            for (E in C) {
                $ = C[E];
                if (!F[E])
                    this.data.push($)
            }
            var D = this.WDb0(this.data);
            this[XlA](D[0]);
            this[T0B](D[1]);
            this.ZsI()
        },
        MbH: function (H) {
            var C = String(this.value).split(this.delimiter),
		F = {};
            for (var $ = 0, D = C.length; $ < D; $++) {
                var G = C[$];
                F[G] = 1
            }
            var A = this.grid.getData(),
		B = [];
            for ($ = 0, D = A.length; $ < D; $++) {
                var _ = A[$],
			E = _[this.valueField];
                if (F[E])
                    B.push(_)
            }
            this.grid[_D](B)
        },
        doUpdate: function () {
            Rs[Ov][YaK][R05g](this);
            this.$g[MLU] = true;
            this.el.style.cursor = "default"
        },
        G3: function ($) {
            Rs[Ov].G3[R05g](this, $);
            switch ($.keyCode) {
                case 46:
                case 8:
                    break;
                case 37:
                    break;
                case 39:
                    break
            }
        },
        JE: function (C) {
            if (this[DcOq]())
                return;
            var _ = mini.getSelectRange(this.$g),
		A = _[0],
		B = _[1],
		$ = this.WOo(A)
        },

        WOo: function (E) {
            var _ = -1;
            if (this.text == "")
                return _;
            var C = String(this.text).split(this.delimiter),
		$ = 0;
            for (var A = 0, D = C.length; A < D; A++) {
                var B = C[A];
                if ($ < E && E <= $ + B.length) {
                    _ = A;
                    break
                }
                $ = $ + B.length + 1
            }
            return _
        },
        getAttrs: function ($) {
            var _ = Rs[Ov][RH][R05g](this, $);
            mini[A5ac]($, _, ["grid", "valueField", "textField"]);
            mini[QRH]($, _, ["multiSelect"]);
            return _
        }
    });
    H58(Rs, "lookup");
    NkRm = function () {
        NkRm[Ov][FaWb][R05g](this);
        this.data = [];
        this[YaK]()
    };
    ZPOi(NkRm, Yw, {
        formField: true,
        value: "",
        text: "",
        valueField: "id",
        textField: "text",
        url: "",
        delay: 250,
        allowInput: true,
        editIndex: 0,
        K8: "mini-textboxlist-focus",
        EUc: "mini-textboxlist-item-hover",
        N2: "mini-textboxlist-item-selected",
        Hvk: "mini-textboxlist-close-hover",
        textName: "",
        setTextName: function ($) {
            this.textName = $
        },
        getTextName: function () {
            return this.textName
        },
        uiCls: "mini-textboxlist",
        _create: function () {
            var A = "<table class=\"mini-textboxlist\" cellpadding=\"0\" cellspacing=\"0\"><tr ><td class=\"mini-textboxlist-border\"><ul></ul><a href=\"#\"></a><input type=\"hidden\"/></td></tr></table>",
		_ = document.createElement("div");
            _.innerHTML = A;
            this.el = _.firstChild;
            var $ = this.el.getElementsByTagName("td")[0];
            this.ulEl = $.firstChild;
            this.$E = $.lastChild;
            this.focusEl = $.childNodes[1]
        },
        destroy: function ($) {
            if (this.isShowPopup)
                this[LjIM]();
            Ej(document, "mousedown", this.M0v, this);
            NkRm[Ov][Yr3P][R05g](this, $)
        },
        _initEvents: function () {
            NkRm[Ov][Ri$][R05g](this);
            Boy(this.el, "mousemove", this._jK, this);
            Boy(this.el, "mouseout", this.S0ud, this);
            Boy(this.el, "mousedown", this.CgJ, this);
            Boy(this.el, "click", this.Qtm, this);
            Boy(this.el, "keydown", this.XiOq, this);
            Boy(document, "mousedown", this.M0v, this)
        },
        M0v: function ($) {
            if (this[DcOq]())
                return false;
            if (this.isShowPopup)
                if (!Uqe(this.popup.el, $.target))
                    this[LjIM]();
        if (this.D_)
            if (this[BmC]($) == false) {
                this[Zk](null, false);
                this.showInput(false);
                this[X9GT](this.K8);
                this.D_ = false
            }
},
errorIconEl: null,
getErrorIconEl: function () {
    if (!this.WR) {
        var _ = this.el.rows[0],
			$ = _.insertCell(1);
        $.style.cssText = "width:18px;vertical-align:top;";
        $.innerHTML = "<div class=\"mini-errorIcon\"></div>";
        this.WR = $.firstChild
    }
    return this.WR
},
E2VD: function () {
    if (this.WR)
        jQuery(this.WR.parentNode).remove();
    this.WR = null
},
doLayout: function () {
    if (this.canLayout() == false)
        return;
    NkRm[Ov][SA][R05g](this);
    if (this[DcOq]() || this.allowInput == false)
        this.Ms[MLU] = true;
    else
        this.Ms[MLU] = false
},
doUpdate: function () {
    if (this.U7eq)
        clearInterval(this.U7eq);
    if (this.Ms)
        Ej(this.Ms, "keydown", this.G3, this);
    var G = [],
		F = this.uid;
    for (var A = 0, E = this.data.length; A < E; A++) {
        var _ = this.data[A],
			C = F + "$text$" + A,
			B = _[this.textField];
        if (mini.isNull(B))
            B = "";
        G[G.length] = "<li id=\"" + C + "\" class=\"mini-textboxlist-item\">";
        G[G.length] = B;
        G[G.length] = "<span class=\"mini-textboxlist-close\"></span></li>"
    }
    var $ = F + "$input";
    G[G.length] = "<li id=\"" + $ + "\" class=\"mini-textboxlist-inputLi\"><input class=\"mini-textboxlist-input\" type=\"text\" autocomplete=\"off\"></li>";
    this.ulEl.innerHTML = G.join("");
    this.editIndex = this.data.length;
    if (this.editIndex < 0)
        this.editIndex = 0;
    this.inputLi = this.ulEl.lastChild;
    this.Ms = this.inputLi.firstChild;
    Boy(this.Ms, "keydown", this.G3, this);
    var D = this;
    this.Ms.onkeyup = function () {
        D.RM8()
    };
    D.U7eq = null;
    D.MaZ = D.Ms.value;
    this.Ms.onfocus = function () {
        D.U7eq = setInterval(function () {
            if (D.MaZ != D.Ms.value) {
                D.T3H();
                D.MaZ = D.Ms.value
            }
        }, 10);
        D[UAC](D.K8);
        D.D_ = true
    };
    this.Ms.onblur = function () {
        clearInterval(D.U7eq)
    }
},
Mfp: function (_) {
    var A = $Rz(_.target, "mini-textboxlist-item");
    if (A) {
        var $ = A.id.split("$"),
			B = $[$.length - 1];
        return this.data[B]
    }
},
getItem: function ($) {
    if (typeof $ == "number")
        return this.data[$];
    if (typeof $ == "object")
        return $
},
getItemEl: function (_) {
    var $ = this.data.indexOf(_),
		A = this.uid + "$text$" + $;
    return document.getElementById(A)
},
hoverItem: function ($, A) {
    this.blurItem();
    var _ = this.getItemEl($);
    E$_(_, this.EUc);
    if (A && Mjm(A.target, "mini-textboxlist-close"))
        E$_(A.target, this.Hvk)
},
blurItem: function () {
    var _ = this.data.length;
    for (var A = 0, C = _; A < C; A++) {
        var $ = this.data[A],
			B = this.getItemEl($);
        if (B) {
            ZVS(B, this.EUc);
            ZVS(B.lastChild, this.Hvk)
        }
    }
},
showInput: function (A) {
    this[Zk](null);
    if (mini.isNumber(A))
        this.editIndex = A;
    else
        this.editIndex = this.data.length;
    if (this.editIndex < 0)
        this.editIndex = 0;
    if (this.editIndex > this.data.length)
        this.editIndex = this.data.length;
    var B = this.inputLi;
    B.style.display = "block";
    if (mini.isNumber(A) && A < this.data.length) {
        var _ = this.data[A],
			$ = this.getItemEl(_);
        jQuery($).before(B)
    } else
        this.ulEl.appendChild(B);
    if (A !== false)
        setTimeout(function () {
            try {
                B.firstChild.focus();
                mini.selectRange(B.firstChild, 100)
            } catch ($) { }

        }, 10);
    else {
        this.lastInputText = "";
        this.Ms.value = ""
    }
    return B
},
select: function (_) {
    _ = this[WtRy](_);
    if (this.RRk) {
        var $ = this.getItemEl(this.RRk);
        ZVS($, this.N2)
    }
    this.RRk = _;
    if (this.RRk) {
        $ = this.getItemEl(this.RRk);
        E$_($, this.N2)
    }
    var A = this;
    if (this.RRk) {
        this.focusEl.focus();
        var B = this;
        setTimeout(function () {
            try {
                B.focusEl.focus()
            } catch ($) { }

        }, 50)
    }
    if (this.RRk) {
        A[UAC](A.K8);
        A.D_ = true
    }
},
Vps: function () {
    var _ = this.Rbw[FSi](),
		$ = this.editIndex;
    if (_) {
        _ = mini.clone(_);
        this.insertItem($, _)
    }
},
insertItem: function (_, $) {
    this.data.insert(_, $);
    var B = this.getText(),
		A = this.getValue();
    this[XlA](A, false);
    this[T0B](B, false);
    this.MG6();
    this[YaK]();
    this.showInput(_ + 1);
    this.ZsI()
},
removeItem: function (_) {
    if (!_)
        return;
    var $ = this.getItemEl(_);
    mini[Gwl]($);
    this.data.remove(_);
    var B = this.getText(),
		A = this.getValue();
    this[XlA](A, false);
    this[T0B](B, false);
    this.ZsI()
},
MG6: function () {
    var C = (this.text ? this.text : "").split(","),
		B = (this.value ? this.value : "").split(",");
    if (B[0] == "")
        B = [];
    var _ = B.length;
    this.data.length = _;
    for (var A = 0, D = _; A < D; A++) {
        var $ = this.data[A];
        if (!$) {
            $ = {};
            this.data[A] = $
        }
        $[this.textField] = !mini.isNull(C[A]) ? C[A] : "";
        $[this.valueField] = !mini.isNull(B[A]) ? B[A] : ""
    }
    this.value = this.getValue();
    this.text = this.getText()
},
getInputText: function () {
    return this.Ms ? this.Ms.value : ""
},
getText: function () {
    var C = [];
    for (var _ = 0, A = this.data.length; _ < A; _++) {
        var $ = this.data[_],
			B = $[this.textField];
        if (mini.isNull(B))
            B = "";
        B = B.replace(",", "\uff0c");
        C.push(B)
    }
    return C.join(",")
},
getValue: function () {
    var B = [];
    for (var _ = 0, A = this.data.length; _ < A; _++) {
        var $ = this.data[_];
        B.push($[this.valueField])
    }
    return B.join(",")
},
setName: function ($) {
    if (this.name != $) {
        this.name = $;
        this.$E.name = $
    }
},
setValue: function ($) {
    if (mini.isNull($))
        $ = "";
    if (this.value != $) {
        this.value = $;
        this.$E.value = $;
        this.MG6();
        this[YaK]()
    }
},
setText: function ($) {
    if (mini.isNull($))
        $ = "";
    if (this.text !== $) {
        this.text = $;
        this.MG6();
        this[YaK]()
    }
},
setValueField: function ($) {
    this[Dv] = $
},
getValueField: function () {
    return this[Dv]
},
setTextField: function ($) {
    this[T2m] = $
},
getTextField: function () {
    return this[T2m]
},
setAllowInput: function ($) {
    this.allowInput = $;
    this[SA]()
},
getAllowInput: function () {
    return this.allowInput
},
setUrl: function ($) {
    this.url = $
},
getUrl: function () {
    return this.url
},
setPopupHeight: function ($) {
    this[YR] = $
},
getPopupHeight: function () {
    return this[YR]
},
setPopupMinHeight: function ($) {
    this[QdaN] = $
},
getPopupMinHeight: function () {
    return this[QdaN]
},
setPopupMaxHeight: function ($) {
    this[DUc] = $
},
getPopupMaxHeight: function () {
    return this[DUc]
},
RM8: function () {
    if (this[RPC]() == false)
        return;
    var _ = this.getInputText(),
		B = mini.measureText(this.Ms, _),
		$ = B.width > 20 ? B.width + 4 : 20,
		A = EvDb(this.el, true);
    if ($ > A - 15)
        $ = A - 15;
    this.Ms.style.width = $ + "px"
},
T3H: function (_) {
    var $ = this;
    setTimeout(function () {
        $.RM8()
    }, 1);
    this[_0oZ]("loading");
    this.EUIy();
    this._loading = true;
    this.delayTimer = setTimeout(function () {
        var _ = $.Ms.value;
        $.GoRN()
    }, this.delay)
},
GoRN: function () {
    if (this[RPC]() == false)
        return;
    var _ = this.getInputText(),
		A = this,
		$ = this.Rbw.getData(),
		B = {
		    key: _,
		    value: this.getValue(),
		    text: this.getText()
		},
		C = this.url,
		E = typeof C == "function" ? C : window[C];
    if (typeof E == "function")
        C = E(this);
    if (!C)
        return;
    var D = {
        url: C,
        async: true,
        data: B,
        type: "GET",
        cache: false,
        dataType: "text",
        cancel: false
    };
    this.fire("beforeload", D);
    if (D.cancel)
        return;
    mini.copyTo(D, {
        success: function ($) {
            var _ = mini.decode($);
            A.Rbw[JmQP](_);
            A[_0oZ]();
            A.Rbw.VNu(0, true);
            A.fire("load");
            A._loading = false;
            if (A._selectOnLoad) {
                A.__doSelectValue();
                A._selectOnLoad = null
            }
        },
        error: function ($, B, _) {
            A[_0oZ]("error")
        }
    });
    A.V5o = jQuery.ajax(D)
},
EUIy: function () {
    if (this.delayTimer) {
        clearTimeout(this.delayTimer);
        this.delayTimer = null
    }
    if (this.V5o)
        this.V5o.abort();
    this._loading = false
},
within: function ($) {
    if (Uqe(this.el, $.target))
        return true;
    if (this[_0oZ] && this.popup && this.popup[BmC]($))
        return true;
    return false
},
popupLoadingText: "<span class='mini-textboxlist-popup-loading'>加载中，请稍后...</span>",
popupErrorText: "<span class='mini-textboxlist-popup-error'>Error</span>",
popupEmptyText: "<span class='mini-textboxlist-popup-noresult'>No Result</span>",
isShowPopup: false,
popupHeight: "",
popupMinHeight: 30,
popupMaxHeight: 150,
LtD: function () {
    if (!this.popup) {
        this.popup = new CACT();
        this.popup[UAC]("mini-textboxlist-popup");
        this.popup.setStyle("position:absolute;left:0;top:0;");
        this.popup[A8E] = true;
        this.popup[HM3](this[Dv]);
        this.popup.setTextField(this[T2m]);
        this.popup[Tlr9](document.body);
        this.popup.on("itemclick", function ($) {
            this[LjIM]();
            this.Vps()
        }, this)
    }
    this.Rbw = this.popup;
    return this.popup
},
showPopup: function ($) {
    this.isShowPopup = true;
    var _ = this.LtD();
    _.el.style.zIndex = mini.getMaxZIndex();
    var B = this.Rbw;
    B[_wQ] = this.popupEmptyText;
    if ($ == "loading") {
        B[_wQ] = this.popupLoadingText;
        this.Rbw[JmQP]([])
    } else if ($ == "error") {
        B[_wQ] = this.popupLoadingText;
        this.Rbw[JmQP]([])
    }
    this.Rbw[YaK]();
    var A = this.getBox(),
		D = A.x,
		C = A.y + A.height;
    this.popup.el.style.display = "block";
    mini[_20](_.el, -1000, -1000);
    this.popup[RG$](A.width);
    this.popup[XS9m](this[YR]);
    if (this.popup[UT]() < this[QdaN])
        this.popup[XS9m](this[QdaN]);
    if (this.popup[UT]() > this[DUc])
        this.popup[XS9m](this[DUc]);
    mini[_20](_.el, D, C)
},
hidePopup: function () {
    this.isShowPopup = false;
    if (this.popup)
        this.popup.el.style.display = "none"
},
_jK: function (_) {
    if (this.enabled == false)
        return;
    var $ = this.Mfp(_);
    if (!$) {
        this.blurItem();
        return
    }
    this.hoverItem($, _)
},
S0ud: function ($) {
    this.blurItem()
},
Qtm: function (_) {
    if (this.enabled == false)
        return;
    var $ = this.Mfp(_);
    if (!$) {
        if ($Rz(_.target, "mini-textboxlist-input"));
        else
            this.showInput();
        return
    }
    this.focusEl.focus();
    this[Zk]($);
    if (_ && Mjm(_.target, "mini-textboxlist-close"))
        this.removeItem($)
},
XiOq: function (B) {
    if (this[DcOq]() || this.allowInput == false)
        return false;
    var $ = this.data.indexOf(this.RRk),
		_ = this;
    function A() {
        var A = _.data[$];
        _.removeItem(A);
        A = _.data[$];
        if (!A)
            A = _.data[$ - 1];
        _[Zk](A);
        if (!A)
            _.showInput()
    }
    switch (B.keyCode) {
        case 8:
            B.preventDefault();
            A();
            break;
        case 37:
        case 38:
            this[Zk](null);
            this.showInput($);
            break;
        case 39:
        case 40:
            $ += 1;
            this[Zk](null);
            this.showInput($);
            break;
        case 46:
            A();
            break
    }
},
__doSelectValue: function () {
    var $ = this.Rbw.getFocusedItem();
    if ($)
        this.Rbw[ZW6]($);
    this.lastInputText = this.text;
    this[LjIM]();
    this.Vps()
},
G3: function (G) {
    this._selectOnLoad = null;
    if (this[DcOq]() || this.allowInput == false)
        return false;
    G.stopPropagation();
    if (this[DcOq]() || this.allowInput == false)
        return;
    var E = mini.getSelectRange(this.Ms),
		B = E[0],
		D = E[1],
		F = this.Ms.value.length,
		C = B == D && B == 0,
		A = B == D && D == F;
    if (this[DcOq]() || this.allowInput == false)
        G.preventDefault();
    if (G.keyCode == 9) {
        this[LjIM]();
        return
    }
    if (G.keyCode == 16 || G.keyCode == 17 || G.keyCode == 18)
        return;
    switch (G.keyCode) {
        case 13:
            if (this.isShowPopup) {
                G.preventDefault();
                if (this._loading) {
                    this._selectOnLoad = true;
                    return
                }
                this.__doSelectValue()
            }
            break;
        case 27:
            G.preventDefault();
            this[LjIM]();
            break;
        case 8:
            if (C)
                G.preventDefault();
        case 37:
            if (C)
                if (this.isShowPopup)
                    this[LjIM]();
                else if (this.editIndex > 0) {
                    var _ = this.editIndex - 1;
                    if (_ < 0)
                        _ = 0;
                    if (_ >= this.data.length)
                        _ = this.data.length - 1;
                    this.showInput(false);
                    this[Zk](_)
                }
        break;
    case 39:
        if (A)
            if (this.isShowPopup)
                this[LjIM]();
            else if (this.editIndex <= this.data.length - 1) {
                _ = this.editIndex;
                this.showInput(false);
                this[Zk](_)
            }
    break;
case 38:
    G.preventDefault();
    if (this.isShowPopup) {
        var _ = -1,
				$ = this.Rbw.getFocusedItem();
        if ($)
            _ = this.Rbw.indexOf($);
        _--;
        if (_ < 0)
            _ = 0;
        this.Rbw.VNu(_, true)
    }
    break;
case 40:
    G.preventDefault();
    if (this.isShowPopup) {
        _ = -1,
				$ = this.Rbw.getFocusedItem();
        if ($)
            _ = this.Rbw.indexOf($);
        _++;
        if (_ < 0)
            _ = 0;
        if (_ >= this.Rbw.getCount())
            _ = this.Rbw.getCount() - 1;
        this.Rbw.VNu(_, true)
    } else
        this.T3H(true);
    break;
default:
    break
}
},
focus: function () {
    try {
        this.Ms.focus()
    } catch ($) { }

},
blur: function () {
    try {
        this.Ms.blur()
    } catch ($) { }

},
getAttrs: function ($) {
    var A = Q2q[Ov][RH][R05g](this, $),
		_ = jQuery($);
    mini[A5ac]($, A, ["value", "text", "valueField", "textField", "url", "popupHeight", "textName"]);
    mini[QRH]($, A, ["allowInput"]);
    mini[ClW]($, A, ["popupMinHeight", "popupMaxHeight"]);
    return A
}
});
H58(NkRm, "textboxlist");
XQF = function () {
    XQF[Ov][FaWb][R05g](this);
    var $ = this;
    $.U7eq = null;
    this.$g.onfocus = function () {
        $.MaZ = $.$g.value;
        $.U7eq = setInterval(function () {
            if ($.MaZ != $.$g.value) {
                $.RY();
                $.MaZ = $.$g.value;
                if ($.$g.value == "" && $.value != "") {
                    $[XlA]("");
                    $.ZsI()
                }
            }
        }, 10)
    };
    this.$g.onblur = function () {
        clearInterval($.U7eq);
        if (!$.isShowPopup())
            if ($.MaZ != $.$g.value)
                if ($.$g.value == "" && $.value != "") {
                    $[XlA]("");
                    $.ZsI()
                }
};
this._buttonEl.style.display = "none"
};
ZPOi(XQF, ImY, {
    url: "",
    allowInput: true,
    delay: 250,
    _buttonWidth: 0,
    uiCls: "mini-autocomplete",
    setUrl: function ($) {
        this.url = $
    },
    setValue: function ($) {
        if (this.value != $) {
            this.value = $;
            this.$E.value = this.value
        }
    },
    setText: function ($) {
        if (this.text != $) {
            this.text = $;
            this.MaZ = $
        }
        this.$g.value = this.text
    },
    popupLoadingText: "<span class='mini-textboxlist-popup-loading'>加载中，请稍后...</span>",
    popupErrorText: "<span class='mini-textboxlist-popup-error'>Error</span>",
    popupEmptyText: "<span class='mini-textboxlist-popup-noresult'>No Result</span>",
    showPopup: function ($) {
        var _ = this.getPopup(),
		A = this.Rbw;
        A[A8E] = true;
        A[_wQ] = this.popupEmptyText;
        if ($ == "loading") {
            A[_wQ] = this.popupLoadingText;
            this.Rbw[JmQP]([])
        } else if ($ == "error") {
            A[_wQ] = this.popupLoadingText;
            this.Rbw[JmQP]([])
        }
        this.Rbw[YaK]();
        XQF[Ov][_0oZ][R05g](this)
    },
    G3: function (C) {
        this.fire("keydown", {
            htmlEvent: C
        });
        if (C.keyCode == 8 && (this[DcOq]() || this.allowInput == false))
            return false;
        if (C.keyCode == 9) {
            this[LjIM]();
            return
        }
        switch (C.keyCode) {
            case 27:
                if (this.isShowPopup())
                    C.stopPropagation();
                this[LjIM]();
                break;
            case 13:
                if (this.isShowPopup()) {
                    C.preventDefault();
                    C.stopPropagation();
                    var _ = this.Rbw.getFocusedIndex();
                    if (_ != -1) {
                        var $ = this.Rbw.getAt(_),
					B = this.Rbw.WDb0([$]),
					A = B[0];
                        this[XlA](A);
                        this[T0B](B[1]);
                        this.ZsI();
                        this[LjIM]()
                    }
                } else
                    this.fire("enter");
                break;
            case 37:
                break;
            case 38:
                _ = this.Rbw.getFocusedIndex();
                if (_ == -1) {
                    _ = 0;
                    if (!this[ARtO]) {
                        $ = this.Rbw.findItems(this.value)[0];
                        if ($)
                            _ = this.Rbw.indexOf($)
                    }
                }
                if (this.isShowPopup())
                    if (!this[ARtO]) {
                        _ -= 1;
                        if (_ < 0)
                            _ = 0;
                        this.Rbw.VNu(_, true)
                    }
            break;
        case 39:
            break;
        case 40:
            _ = this.Rbw.getFocusedIndex();
            if (this.isShowPopup()) {
                if (!this[ARtO]) {
                    _ += 1;
                    if (_ > this.Rbw.getCount() - 1)
                        _ = this.Rbw.getCount() - 1;
                    this.Rbw.VNu(_, true)
                }
            } else
                this.RY(this.$g.value);
            break;
        default:
            this.RY(this.$g.value);
            break
    }
},
RY: function (_) {
    var $ = this;
    if (this._queryTimer) {
        clearTimeout(this._queryTimer);
        this._queryTimer = null
    }
    this._queryTimer = setTimeout(function () {
        var _ = $.$g.value;
        $.GoRN(_)
    }, this.delay);
    this[_0oZ]("loading")
},
GoRN: function ($) {
    if (!this.url)
        return;
    if (this.V5o)
        this.V5o.abort();
    var _ = this;
    this.V5o = jQuery.ajax({
        url: this.url,
        data: {
            key: $
        },
        async: true,
        cache: false,
        dataType: "text",
        success: function ($) {
            try {
                var A = mini.decode($)
            } catch (B) {
                throw new Error("autocomplete json is error")
            }
            _.Rbw[JmQP](A);
            _[_0oZ]();
            _.Rbw.VNu(0, true);
            _.fire("load")
        },
        error: function ($, B, A) {
            _[_0oZ]("error")
        }
    })
},
getAttrs: function ($) {
    var A = XQF[Ov][RH][R05g](this, $),
		_ = jQuery($);
    return A
}
});
H58(XQF, "autocomplete");
mini.Form = function ($) {
    this.el = X4g($);
    if (!this.el)
        throw new Error("form element not null");
    mini.Form[Ov][FaWb][R05g](this)
};
ZPOi(mini.Form, ZaZ, {
    el: null,
    getFields: function () {
        if (!this.el)
            return [];
        var $ = mini.findControls(function ($) {
            if (!$.el || $.formField != true)
                return false;
            if (Uqe(this.el, $.el))
                return true;
            return false
        }, this);
        return $
    },
    getFieldsMap: function () {
        var B = this.getFields(),
		A = {};
        for (var $ = 0, C = B.length; $ < C; $++) {
            var _ = B[$];
            if (_.name)
                A[_.name] = _
        }
        return A
    },
    getField: function ($) {
        if (!this.el)
            return null;
        return mini.getbyName($, this.el)
    },
    getData: function (B) {
        var A = B ? "getFormValue" : "getValue",
		$ = this.getFields(),
		D = {};
        for (var _ = 0, E = $.length; _ < E; _++) {
            var C = $[_],
			F = C[A];
            if (!F)
                continue;
            if (C.name)
                D[C.name] = F[R05g](C);
            if (C.textName && C.getText)
                D[C.textName] = C.getText()
        }
        return D
    },
    setData: function (E, A) {
        if (typeof E != "object")
            E = {};
        var B = this.getFieldsMap();
        for (var C in B) {
            var _ = B[C];
            if (!_)
                continue;
            if (_[XlA]) {
                var D = E[C];
                if (D === undefined && A === false)
                    continue;
                if (D === null)
                    D = "";
                _[XlA](D)
            }
            if (_[T0B] && _.textName) {
                var $ = E[_.textName] || "";
                _[T0B]($)
            }
        }
    },
    reset: function () {
        var $ = this.getFields();
        for (var _ = 0, B = $.length; _ < B; _++) {
            var A = $[_];
            if (!A[XlA])
                continue;
            if (A[T0B])
                A[T0B]("");
            A[XlA](A[FD0])
        }
        this.setIsValid(true)
    },
    clear: function () {
        var $ = this.getFields();
        for (var _ = 0, B = $.length; _ < B; _++) {
            var A = $[_];
            if (!A[XlA])
                continue;
            A[XlA]("");
            if (A[T0B])
                A[T0B]("")
        }
        this.setIsValid(true)
    },
    validate: function (C) {
        var $ = this.getFields();
        for (var _ = 0, D = $.length; _ < D; _++) {
            var A = $[_];
            if (!A[KJF])
                continue;
            var B = A[KJF]();
            if (B == false && C === false)
                break
        }
        return this.isValid()
    },
    setIsValid: function (B) {
        var $ = this.getFields();
        for (var _ = 0, C = $.length; _ < C; _++) {
            var A = $[_];
            if (!A.setIsValid)
                continue;
            A.setIsValid(B)
        }
    },
    isValid: function () {
        var $ = this.getFields();
        for (var _ = 0, B = $.length; _ < B; _++) {
            var A = $[_];
            if (!A.isValid)
                continue;
            if (A.isValid() == false)
                return false
        }
        return true
    },
    getErrorTexts: function () {
        var A = [],
		_ = this.getErrors();
        for (var $ = 0, C = _.length; $ < C; $++) {
            var B = _[$];
            A.push(B.errorText)
        }
        return A
    },
    getErrors: function () {
        var A = [],
		$ = this.getFields();
        for (var _ = 0, C = $.length; _ < C; _++) {
            var B = $[_];
            if (!B.isValid)
                continue;
            if (B.isValid() == false)
                A.push(B)
        }
        return A
    },
    mask: function ($) {
        if (typeof $ == "string")
            $ = {
                html: $
            };
        $ = $ || {};
        $.el = this.el;
        if (!$.cls)
            $.cls = this.A1u;
        mini.mask($)
    },
    unmask: function () {
        mini.unmask(this.el)
    },
    A1u: "mini-mask-loading",
    loadingMsg: "\u6570\u636e\u52a0\u8f7d\u4e2d\uff0c\u8bf7\u7a0d\u540e...",
    loading: function ($) {
        this.mask($ || this.loadingMsg)
    },
    Wji: function ($) {
        this._changed = true
    },
    _changed: false,
    setChanged: function (A) {
        this._changed = A;
        var $ = form.getFields();
        for (var _ = 0, C = $.length; _ < C; _++) {
            var B = $[_];
            B.on("valuechanged", this.Wji, this)
        }
    },
    isChanged: function () {
        return this._changed
    },
    setEnabled: function (A) {
        var $ = form.getFields();
        for (var _ = 0, C = $.length; _ < C; _++) {
            var B = $[_];
            B.setEnabled(A)
        }
    }
});
Ma = function () {
    Ma[Ov][FaWb][R05g](this)
};
ZPOi(Ma, Jva, {
    style: "",
    _clearBorder: false,
    uiCls: "mini-fit",
    _create: function () {
        this.el = document.createElement("div");
        this.el.className = "mini-fit";
        this.Jo4 = this.el
    },
    _initEvents: function () { },
    isFixedSize: function () {
        return false
    },
    doLayout: function () {
        if (!this.canLayout())
            return;
        var $ = this.el.parentNode,
		_ = mini[SY0]($);
        if ($ == document.body)
            this.el.style.height = "0px";
        var F = Cop($, true);
        for (var E = 0, D = _.length; E < D; E++) {
            var C = _[E];
            if (C == this.el)
                continue;
            var G = CU(C, "position");
            if (G == "absolute" || G == "fixed")
                continue;
            var A = Cop(C),
			I = BRb(C);
            F = F - A - I.top - I.bottom
        }
        var H = _t(this.el),
		B = PvB(this.el),
		I = BRb(this.el);
        F = F - I.top - I.bottom;
        if (jQuery.boxModel)
            F = F - B.top - B.bottom - H.top - H.bottom;
        if (F < 0)
            F = 0;
        this.el.style.height = F + "px";
        try {
            _ = mini[SY0](this.el);
            for (E = 0, D = _.length; E < D; E++) {
                C = _[E];
                mini.layout(C)
            }
        } catch (J) { }

    },
    set_bodyParent: function ($) {
        if (!$)
            return;
        var _ = this.Jo4,
		A = $;
        while (A.firstChild) {
            try {
                _.appendChild(A.firstChild)
            } catch (B) { }

        }
        this[SA]()
    },
    getAttrs: function ($) {
        var _ = Ma[Ov][RH][R05g](this, $);
        _._bodyParent = $;
        return _
    }
});
H58(Ma, "fit");
NUs = function () {
    this.Oqf();
    NUs[Ov][FaWb][R05g](this);
    if (this.url)
        this.setUrl(this.url)
};
ZPOi(NUs, Jva, {
    width: 250,
    title: "",
    iconCls: "",
    iconStyle: "",
    url: "",
    refreshOnExpand: false,
    maskOnLoad: true,
    showCollapseButton: false,
    showCloseButton: false,
    closeAction: "display",
    showHeader: true,
    showToolbar: false,
    showFooter: false,
    headerCls: "",
    headerStyle: "",
    bodyCls: "",
    bodyStyle: "",
    footerCls: "",
    footerStyle: "",
    toolbarCls: "",
    toolbarStyle: "",
    set: function (_) {
        if (typeof _ == "string")
            return this;
        var C = this.XgLp;
        this.XgLp = false;
        var B = _.toolbar;
        delete _.toolbar;
        var $ = _.footer;
        delete _.footer;
        var A = _.url;
        delete _.url;
        NUs[Ov].set[R05g](this, _);
        if (B)
            this.setToolbar(B);
        if ($)
            this.setFooter($);
        if (A)
            this.setUrl(A);
        this.XgLp = C;
        this[SA]();
        return this
    },
    uiCls: "mini-panel",
    _create: function () {
        this.el = document.createElement("div");
        this.el.className = "mini-panel";
        var _ = "<div class=\"mini-panel-border\">" + "<div class=\"mini-panel-header\" ><div class=\"mini-panel-header-inner\" ><span class=\"mini-panel-icon\"></span><div class=\"mini-panel-title\" ></div><div class=\"mini-tools\" ></div></div></div>" + "<div class=\"mini-panel-viewport\">" + "<div class=\"mini-panel-toolbar\"></div>" + "<div class=\"mini-panel-body\" ></div>" + "<div class=\"mini-panel-footer\"></div>" + "<div class=\"mini-panel-resizeGrid\"></div>" + "</div>" + "</div>";
        this.el.innerHTML = _;
        this.KDCb = this.el.firstChild;
        this.OW = this.KDCb.firstChild;
        this.Hza3 = this.KDCb.lastChild;
        this.QdH_ = mini.byClass("mini-panel-toolbar", this.el);
        this.Jo4 = mini.byClass("mini-panel-body", this.el);
        this.Tqf = mini.byClass("mini-panel-footer", this.el);
        this.Eln = mini.byClass("mini-panel-resizeGrid", this.el);
        var $ = mini.byClass("mini-panel-header-inner", this.el);
        this._u_m = mini.byClass("mini-panel-icon", this.el);
        this.VL = mini.byClass("mini-panel-title", this.el);
        this.CZ3d = mini.byClass("mini-tools", this.el);
        DaZ(this.Jo4, this.bodyStyle);
        this[YaK]()
    },
    _initEvents: function () {
        VMPY(function () {
            Boy(this.el, "click", this.Qtm, this)
        }, this)
    },
    doUpdate: function () {
        this.VL.innerHTML = this.title;
        this._u_m.style.display = (this.iconCls || this[Jhs]) ? "inline" : "none";
        this._u_m.className = "mini-panel-icon " + this.iconCls;
        DaZ(this._u_m, this[Jhs]);
        this.OW.style.display = this.showHeader ? "" : "none";
        this.QdH_.style.display = this[MCi] ? "" : "none";
        this.Tqf.style.display = this[TaXk] ? "" : "none";
        var A = "";
        for (var $ = this.buttons.length - 1; $ >= 0; $--) {
            var _ = this.buttons[$];
            A += "<span id=\"" + $ + "\" class=\"" + _.cls + " " + (_.enabled ? "" : "mini-disabled") + "\" style=\"" + _.style + ";" + (_.visible ? "" : "display:none;") + "\"></span>"
        }
        this.CZ3d.innerHTML = A;
        this[SA]()
    },
    count: 1,
    doLayout: function () {
        if (!this.canLayout())
            return;
        this.Eln.style.display = this[MZ] ? "" : "none";
        this.Jo4.style.height = "";
        this.Jo4.style.width = "";
        this.OW.style.width = "";
        this.Hza3.style.width = "";
        var F = this[Rlg](),
		C = this[U_Ap](),
		_ = PvB(this.Jo4),
		G = _t(this.Jo4),
		J = BRb(this.Jo4),
		$ = this[QRh](true),
		E = $;
        $ = $ - J.left - J.right;
        if (jQuery.boxModel)
            $ = $ - _.left - _.right - G.left - G.right;
        if ($ < 0)
            $ = 0;
        this.Jo4.style.width = $ + "px";
        $ = E;
        this.OW.style.width = $ + "px";
        this.QdH_.style.width = $ + "px";
        this.Tqf.style.width = "auto";
        if (!F) {
            var I = _t(this.KDCb),
			A = this[UT](true),
			B = this.showHeader ? jQuery(this.OW).outerHeight() : 0,
			D = this[MCi] ? jQuery(this.QdH_).outerHeight() : 0,
			H = this[TaXk] ? jQuery(this.Tqf).outerHeight() : 0;
            this.Hza3.style.height = (A - B) + "px";
            A = A - B - D - H;
            if (jQuery.boxModel)
                A = A - _.top - _.bottom - G.top - G.bottom;
            A = A - J.top - J.bottom;
            if (A < 0)
                A = 0;
            this.Jo4.style.height = A + "px"
        }
        mini.layout(this.KDCb)
    },
    setHeaderStyle: function ($) {
        this.headerStyle = $;
        DaZ(this.OW, $);
        this[SA]()
    },
    getHeaderStyle: function () {
        return this.headerStyle
    },
    setBodyStyle: function ($) {
        this.bodyStyle = $;
        DaZ(this.Jo4, $);
        this[SA]()
    },
    getBodyStyle: function () {
        return this.bodyStyle
    },
    setToolbarStyle: function ($) {
        this.toolbarStyle = $;
        DaZ(this.QdH_, $);
        this[SA]()
    },
    getToolbarStyle: function () {
        return this.toolbarStyle
    },
    setFooterStyle: function ($) {
        this.footerStyle = $;
        DaZ(this.Tqf, $);
        this[SA]()
    },
    getFooterStyle: function () {
        return this.footerStyle
    },
    setHeaderCls: function ($) {
        jQuery(this.OW)[Ewq](this.headerCls);
        jQuery(this.OW)[$wd]($);
        this.headerCls = $;
        this[SA]()
    },
    getHeaderCls: function () {
        return this.headerCls
    },
    setBodyCls: function ($) {
        jQuery(this.Jo4)[Ewq](this.bodyCls);
        jQuery(this.Jo4)[$wd]($);
        this.bodyCls = $;
        this[SA]()
    },
    getBodyCls: function () {
        return this.bodyCls
    },
    setToolbarCls: function ($) {
        jQuery(this.QdH_)[Ewq](this.toolbarCls);
        jQuery(this.QdH_)[$wd]($);
        this.toolbarCls = $;
        this[SA]()
    },
    getToolbarCls: function () {
        return this.toolbarCls
    },
    setFooterCls: function ($) {
        jQuery(this.Tqf)[Ewq](this.footerCls);
        jQuery(this.Tqf)[$wd]($);
        this.footerCls = $;
        this[SA]()
    },
    getFooterCls: function () {
        return this.footerCls
    },
    setTitle: function ($) {
        this.title = $;
        this[YaK]()
    },
    getTitle: function () {
        return this.title
    },
    setIconCls: function ($) {
        this.iconCls = $;
        this[YaK]()
    },
    getIconCls: function () {
        return this.iconCls
    },
    setShowCloseButton: function ($) {
        this[NVR1] = $;
        var _ = this.getButton("close");
        _.visible = $;
        if (_)
            this[YaK]()
    },
    getShowCloseButton: function () {
        return this[NVR1]
    },
    setCloseAction: function ($) {
        this[OiX] = $
    },
    getCloseAction: function () {
        return this[OiX]
    },
    setShowCollapseButton: function ($) {
        this[PZh1] = $;
        var _ = this.getButton("collapse");
        _.visible = $;
        if (_)
            this[YaK]()
    },
    getShowCollapseButton: function () {
        return this[PZh1]
    },
    setShowHeader: function ($) {
        this.showHeader = $;
        this[YaK]()
    },
    getShowHeader: function () {
        return this.showHeader
    },
    setShowToolbar: function ($) {
        this[MCi] = $;
        this[YaK]()
    },
    getShowToolbar: function () {
        return this[MCi]
    },
    setShowFooter: function ($) {
        this[TaXk] = $;
        this[YaK]()
    },
    getShowFooter: function () {
        return this[TaXk]
    },
    Qtm: function (A) {
        var $ = $Rz(A.target, "mini-tools");
        if ($) {
            var _ = this.getButton(parseInt(A.target.id));
            if (_)
                this.FWY(_, A)
        }
    },
    FWY: function (B, $) {
        var C = {
            button: B,
            index: this.buttons.indexOf(B),
            name: B.name.toLowerCase(),
            htmlEvent: $,
            cancel: false
        };
        this.fire("beforebuttonclick", C);
        try {
            if (C.name == "close" && this[OiX] == "destroy" && this.EZT0 && this.EZT0.contentWindow) {
                var _ = true;
                if (this.EZT0.contentWindow.CloseWindow)
                    _ = this.EZT0.contentWindow.CloseWindow("close");
                else if (this.EZT0.contentWindow.CloseOwnerWindow)
                    _ = this.EZT0.contentWindow.CloseOwnerWindow("close");
                if (_ === false)
                    C.cancel = true
            }
        } catch (A) { }

        if (C.cancel == true)
            return C;
        this.fire("buttonclick", C);
        if (C.name == "close")
            if (this[OiX] == "destroy") {
                this.__HideAction = "close";
                this[Yr3P]()
            } else
                this.hide();
        if (C.name == "collapse") {
            this.toggle();
            if (this[JBX] && this.expanded && this.url)
                this.reload()
        }
        return C
    },
    onButtonClick: function (_, $) {
        this.on("buttonclick", _, $)
    },
    Oqf: function () {
        this.buttons = [];
        var _ = this.createButton({
            name: "close",
            cls: "mini-tools-close",
            visible: this[NVR1]
        });
        this.buttons.push(_);
        var $ = this.createButton({
            name: "collapse",
            cls: "mini-tools-collapse",
            visible: this[PZh1]
        });
        this.buttons.push($)
    },
    createButton: function (_) {
        var $ = mini.copyTo({
            name: "",
            cls: "",
            style: "",
            visible: true,
            enabled: true,
            html: ""
        }, _);
        return $
    },
    addButton: function (_, $) {
        if (typeof _ == "string")
            _ = {
                iconCls: _
            };
        _ = this.createButton(_);
        if (typeof $ != "number")
            $ = this.buttons.length;
        this.buttons.insert($, _);
        this[YaK]()
    },
    updateButton: function ($, A) {
        var _ = this.getButton($);
        if (!_)
            return;
        mini.copyTo(_, A);
        this[YaK]()
    },
    removeButton: function ($) {
        var _ = this.getButton($);
        if (!_)
            return;
        this.buttons.remove(_);
        this[YaK]()
    },
    getButton: function ($) {
        if (typeof $ == "number")
            return this.buttons[$];
        else
            for (var _ = 0, A = this.buttons.length; _ < A; _++) {
                var B = this.buttons[_];
                if (B.name == $)
                    return B
            }
    },
    destroy: function ($) {
        this.ZR84();
        this.EZT0 = null;
        this.QdH_ = null;
        this.Jo4 = null;
        this.Tqf = null;
        NUs[Ov][Yr3P][R05g](this, $)
    },
    setBody: function (_) {
        if (!_)
            return;
        if (!mini.isArray(_))
            _ = [_];
        for (var $ = 0, A = _.length; $ < A; $++) {
            var B = _[$];
            mini.append(this.Jo4, B)
        }
        mini.parse(this.Jo4);
        this[SA]()
    },
    set_bodyParent: function ($) { },
    setToolbar: function (_) {
        if (!_)
            return;
        if (!mini.isArray(_))
            _ = [_];
        for (var $ = 0, A = _.length; $ < A; $++)
            mini.append(this.QdH_, _[$]);
        mini.parse(this.QdH_);
        this[SA]()
    },
    setFooter: function (_) {
        if (!_)
            return;
        if (!mini.isArray(_))
            _ = [_];
        for (var $ = 0, A = _.length; $ < A; $++)
            mini.append(this.Tqf, _[$]);
        mini.parse(this.Tqf);
        this[SA]()
    },
    getHeaderEl: function () {
        return this.OW
    },
    getToolbarEl: function () {
        return this.QdH_
    },
    getBodyEl: function () {
        return this.Jo4
    },
    getFooterEl: function () {
        return this.Tqf
    },
    getIFrameEl: function ($) {
        return this.EZT0
    },
    QL: function () {
        return this.Jo4
    },
    ZR84: function ($) {
        if (this.EZT0) {
            var _ = this.EZT0;
            _.src = "";
            if (_._ondestroy)
                _._ondestroy();
            try {
                this.EZT0.parentNode.removeChild(this.EZT0);
                this.EZT0[Gwl](true)
            } catch (A) { }

        }
        this.EZT0 = null;
        try {
            CollectGarbage()
        } catch (B) { }

        if ($ === true)
            mini.removeChilds(this.Jo4)
    },
    CA: 80,
    IGi: function () {
        this.ZR84(true);
        var A = new Date(),
		$ = this;
        this.loadedUrl = this.url;
        //                if (this.maskOnLoad)
        //                    this.loading();
        var _ = mini.createIFrame(this.url, function (_, C) {
            var B = (A - new Date()) + $.CA;
            if (B < 0)
                B = 0;
            setTimeout(function () {
                $.unmask()
            }, B);
            try {
                $.EZT0.contentWindow.Owner = $.Owner;
                $.EZT0.contentWindow.CloseOwnerWindow = function (_) {
                    $.__HideAction = _;
                    var A = true;
                    if ($.__onDestroy)
                        A = $.__onDestroy(_);
                    if (A === false)
                        return false;
                    var B = {
                        iframe: $.EZT0,
                        action: _
                    };
                    $.fire("unload", B);
                    setTimeout(function () {
                        $[Yr3P]()
                    }, 10)
                }
            } catch (D) { }

            if (C) {
                if ($.__onLoad)
                    $.__onLoad();
                var D = {
                    iframe: $.EZT0
                };
                $.fire("load", D)
            }
        });
        this.Jo4.appendChild(_);
        this.EZT0 = _
    },
    load: function (_, $, A) {
        this.setUrl(_, $, A)
    },
    reload: function () {
        this.setUrl(this.url)
    },
    setUrl: function ($, _, A) {
        this.url = $;
        this.__onLoad = _;
        this.__onDestroy = A;
        if (this.expanded)
            this.IGi()
    },
    getUrl: function () {
        return this.url
    },
    setRefreshOnExpand: function ($) {
        this[JBX] = $
    },
    getRefreshOnExpand: function () {
        return this[JBX]
    },
    setMaskOnLoad: function ($) {
        this.maskOnLoad = $
    },
    getMaskOnLoad: function ($) {
        return this.maskOnLoad
    },
    expanded: true,
    setExpanded: function ($) {
        if (this.expanded != $) {
            this.expanded = $;
            if (this.expanded)
                this.expand();
            else
                this.collapse()
        }
    },
    toggle: function () {
        if (this.expanded)
            this.collapse();
        else
            this.expand()
    },
    collapse: function () {
        this.expanded = false;
        this._height = this.el.style.height;
        this.el.style.height = "auto";
        this.Hza3.style.display = "none";
        E$_(this.el, "mini-panel-collapse");
        this[SA]()
    },
    expand: function () {
        this.expanded = true;
        this.el.style.height = this._height;
        this.Hza3.style.display = "block";
        delete this._height;
        ZVS(this.el, "mini-panel-collapse");
        if (this.url && this.url != this.loadedUrl)
            this.IGi();
        this[SA]()
    },
    getAttrs: function (_) {
        var D = NUs[Ov][RH][R05g](this, _);
        mini[A5ac](_, D, ["title", "iconCls", "iconStyle", "headerCls", "headerStyle", "bodyCls", "bodyStyle", "footerCls", "footerStyle", "toolbarCls", "toolbarStyle", "footer", "toolbar", "url", "closeAction", "loadingMsg", "beforebuttonclick", "buttonclick", "load"]);
        mini[QRH](_, D, ["allowResize", "showCloseButton", "showHeader", "showToolbar", "showFooter", "showCollapseButton", "refreshOnExpand", "maskOnLoad", "expanded"]);
        var C = mini[SY0](_, true);
        for (var $ = C.length - 1; $ >= 0; $--) {
            var B = C[$],
			A = jQuery(B).attr("property");
            if (!A)
                continue;
            A = A.toLowerCase();
            if (A == "toolbar")
                D.toolbar = B;
            else if (A == "footer")
                D.footer = B
        }
        D.body = C;
        return D
    }
});
H58(NUs, "panel");
Hjg = function () {
    Hjg[Ov][FaWb][R05g](this);
    this[UAC]("mini-window");
    this[IJjY](false);
    this.setAllowDrag(this.allowDrag);
    this.setAllowResize(this[MZ])
};
ZPOi(Hjg, NUs, {
    x: 0,
    y: 0,
    state: "restore",
    Ii9: "mini-window-drag",
    HPj: "mini-window-resize",
    allowDrag: true,
    allowResize: false,
    showCloseButton: true,
    showMaxButton: false,
    showMinButton: false,
    showCollapseButton: false,
    showModal: true,
    minWidth: 150,
    minHeight: 80,
    maxWidth: 2000,
    maxHeight: 2000,
    uiCls: "mini-window",
    _create: function () {
        Hjg[Ov][P1V][R05g](this)
    },
    Oqf: function () {
        this.buttons = [];
        var A = this.createButton({
            name: "close",
            cls: "mini-tools-close",
            visible: this[NVR1]
        });
        this.buttons.push(A);
        var B = this.createButton({
            name: "max",
            cls: "mini-tools-max",
            visible: this[F5V]
        });
        this.buttons.push(B);
        var _ = this.createButton({
            name: "min",
            cls: "mini-tools-min",
            visible: this[Wms]
        });
        this.buttons.push(_);
        var $ = this.createButton({
            name: "collapse",
            cls: "mini-tools-collapse",
            visible: this[PZh1]
        });
        this.buttons.push($)
    },
    _initEvents: function () {
        Hjg[Ov][Ri$][R05g](this);
        VMPY(function () {
            Boy(this.el, "mouseover", this.QwgP, this);
            Boy(window, "resize", this.K6Wd, this);
            Boy(this.el, "mousedown", this.Q2T, this)
        }, this)
    },
    doLayout: function () {
        if (!this.canLayout())
            return;
        if (this.state == "max") {
            var $ = this.getParentBox();
            this.el.style.left = "0px";
            this.el.style.top = "0px";
            mini.setSize(this.el, $.width, $.height)
        }
        Hjg[Ov][SA][R05g](this);
        if (this.allowDrag)
            E$_(this.el, this.Ii9);
        if (this.state == "max") {
            this.Eln.style.display = "none";
            ZVS(this.el, this.Ii9)
        }
        this.QS5()
    },
    QS5: function () {
        var A = this[Rsza] && this[RPC]();
        if (!this.YyCo)
            this.YyCo = mini.append(document.body, "<div class=\"mini-modal\" style=\"display:none\"></div>");
        function $() {
            mini[Smh](document.body);
            var $ = document.documentElement,
			B = parseInt(Math.max(document.body.scrollWidth, $ ? $.scrollWidth : 0)),
			E = parseInt(Math.max(document.body.scrollHeight, $ ? $.scrollHeight : 0)),
			D = mini.getViewportBox(),
			C = D.height;
            if (C < E)
                C = E;
            var _ = D.width;
            if (_ < B)
                _ = B;
            this.YyCo.style.display = A ? "block" : "none";
            this.YyCo.style.height = C + "px";
            this.YyCo.style.width = _ + "px";
            this.YyCo.style.zIndex = CU(this.el, "zIndex") - 1
        }
        if (A) {
            var _ = this;
            setTimeout(function () {
                _.YyCo.style.display = "none";
                $[R05g](_)
            }, 1)
        } else
            this.YyCo.style.display = "none"
    },
    getParentBox: function () {
        var $ = mini.getViewportBox(),
		_ = this.QPg || document.body;
        if (_ != document.body)
            $ = L05(_);
        return $
    },
    setShowModal: function ($) {
        this[Rsza] = $
    },
    getShowModal: function () {
        return this[Rsza]
    },
    setMinWidth: function ($) {
        if (isNaN($))
            return;
        this.minWidth = $
    },
    getMinWidth: function () {
        return this.minWidth
    },
    setMinHeight: function ($) {
        if (isNaN($))
            return;
        this.minHeight = $
    },
    getMinHeight: function () {
        return this.minHeight
    },
    setMaxWidth: function ($) {
        if (isNaN($))
            return;
        this.maxWidth = $
    },
    getMaxWidth: function () {
        return this.maxWidth
    },
    setMaxHeight: function ($) {
        if (isNaN($))
            return;
        this.maxHeight = $
    },
    getMaxHeight: function () {
        return this.maxHeight
    },
    setAllowDrag: function ($) {
        this.allowDrag = $;
        ZVS(this.el, this.Ii9);
        if ($)
            E$_(this.el, this.Ii9)
    },
    getAllowDrag: function () {
        return this.allowDrag
    },
    setAllowResize: function ($) {
        if (this[MZ] != $) {
            this[MZ] = $;
            this[SA]()
        }
    },
    getAllowResize: function () {
        return this[MZ]
    },
    setShowMaxButton: function ($) {
        this[F5V] = $;
        var _ = this.getButton("max");
        _.visible = $;
        if (_)
            this[YaK]()
    },
    getShowMaxButton: function () {
        return this[F5V]
    },
    setShowMinButton: function ($) {
        this[Wms] = $;
        var _ = this.getButton("min");
        _.visible = $;
        if (_)
            this[YaK]()
    },
    getShowMinButton: function () {
        return this[Wms]
    },
    max: function () {
        this.state = "max";
        this.show();
        var $ = this.getButton("max");
        if ($) {
            $.cls = "mini-tools-restore";
            this[YaK]()
        }
    },
    restore: function () {
        this.state = "restore";
        this.show(this.x, this.y);
        var $ = this.getButton("max");
        if ($) {
            $.cls = "mini-tools-max";
            this[YaK]()
        }
    },
    containerEl: null,
    show: function (B, _) {
        this.XgLp = false;
        var A = this.QPg || document.body;
        if (!this.isRender() || this.el.parentNode != A)
            this[Tlr9](A);
        this.el.style.zIndex = mini.getMaxZIndex();
        this.FlUF(B, _);
        this.XgLp = true;
        this[IJjY](true);
        if (this.state != "max") {
            var $ = L05(this.el);
            this.x = $.x;
            this.y = $.y
        }
        try {
            this.el.focus()
        } catch (C) { }

    },
    hide: function () {
        this[IJjY](false);
        this.QS5()
    },
    T8o: function () {
        this.el.style.display = "";
        var $ = L05(this.el);
        if ($.width > this.maxWidth) {
            X9c(this.el, this.maxWidth);
            $ = L05(this.el)
        }
        if ($.height > this.maxHeight) {
            G2Mf(this.el, this.maxHeight);
            $ = L05(this.el)
        }
        if ($.width < this.minWidth) {
            X9c(this.el, this.minWidth);
            $ = L05(this.el)
        }
        if ($.height < this.minHeight) {
            G2Mf(this.el, this.minHeight);
            $ = L05(this.el)
        }
    },
    FlUF: function (B, A) {
        var _ = this.getParentBox();
        if (this.state == "max") {
            if (!this._width) {
                var $ = L05(this.el);
                this._width = $.width;
                this._height = $.height;
                this.x = $.x;
                this.y = $.y
            }
        } else {
            if (mini.isNull(B))
                B = "center";
            if (mini.isNull(A))
                A = "middle";
            this.el.style.position = "absolute";
            this.el.style.left = "-2000px";
            this.el.style.top = "-2000px";
            this.el.style.display = "";
            if (this._width) {
                this[RG$](this._width);
                this[XS9m](this._height)
            }
            this.T8o();
            $ = L05(this.el);
            if (B == "left")
                B = 0;
            if (B == "center")
                B = _.width / 2 - $.width / 2;
            if (B == "right")
                B = _.width - $.width;
            if (A == "top")
                A = 0;
            if (A == "middle")
                A = _.y + _.height / 2 - $.height / 2;
            if (A == "bottom")
                A = _.height - $.height;
            if (B + $.width > _.right)
                B = _.right - $.width;
            if (A + $.height > _.bottom)
                A = _.bottom - $.height;
            if (B < 0)
                B = 0;
            if (A < 0)
                A = 0;
            this.el.style.display = "";
            mini.setX(this.el, B);
            mini.setY(this.el, A);
            this.el.style.left = B + "px";
            this.el.style.top = A + "px"
        }
        this[SA]()
    },
    FWY: function (_, $) {
        var A = Hjg[Ov].FWY[R05g](this, _, $);
        if (A.cancel == true)
            return A;
        if (A.name == "max")
            if (this.state == "max")
                this.restore();
            else
                this.max();
    return A
},
K6Wd: function ($) {
    if (this.state == "max")
        this[SA]();
    if (!mini.isIE6)
        this.QS5()
},
Q2T: function (B) {
    var _ = this;
    if (this.state != "max" && this.allowDrag && Uqe(this.OW, B.target) && !$Rz(B.target, "mini-tools")) {
        var _ = this,
			A = this.getBox(),
			$ = new mini.Drag({
			    capture: false,
			    onStart: function () {
			        _.W8da = mini.append(document.body, "<div class=\"mini-resizer-mask\"></div>");
			        _.R8 = mini.append(document.body, "<div class=\"mini-drag-proxy\"></div>")
			    },
			    onMove: function (B) {
			        var F = B.now[0] - B.init[0],
						E = B.now[1] - B.init[1];
			        F = A.x + F;
			        E = A.y + E;
			        var D = _.getParentBox(),
						$ = F + A.width,
						C = E + A.height;
			        if ($ > D.width)
			            F = D.width - A.width;
			        if (F < 0)
			            F = 0;
			        if (E < 0)
			            E = 0;
			        _.x = F;
			        _.y = E;
			        var G = {
			            x: F,
			            y: E,
			            width: A.width,
			            height: A.height
			        };
			        X7y(_.R8, G)
			    },
			    onStop: function () {
			        var $ = L05(_.R8);
			        X7y(_.el, $);
			        jQuery(_.W8da).remove();
			        _.W8da = null;
			        jQuery(_.R8).remove();
			        _.R8 = null
			    }
			});
        $.start(B)
    }
    if (Uqe(this.Eln, B.target) && this[MZ]) {
        $ = this.O33();
        $.start(B)
    }
},
O33: function () {
    if (!this._resizeDragger)
        this._resizeDragger = new mini.Drag({
            capture: true,
            onStart: mini.createDelegate(this.IA, this),
            onMove: mini.createDelegate(this.XIeJ, this),
            onStop: mini.createDelegate(this.$vRk, this)
        });
    return this._resizeDragger
},
IA: function ($) {
    this.proxy = mini.append(document.body, "<div class=\"mini-windiw-resizeProxy\"></div>");
    this.proxy.style.cursor = "se-resize";
    this.elBox = L05(this.el);
    X7y(this.proxy, this.elBox)
},
XIeJ: function (A) {
    var C = A.now[0] - A.init[0],
		$ = A.now[1] - A.init[1],
		_ = this.elBox.width + C,
		B = this.elBox.height + $;
    if (_ < this.minWidth)
        _ = this.minWidth;
    if (B < this.minHeight)
        B = this.minHeight;
    if (_ > this.maxWidth)
        _ = this.maxWidth;
    if (B > this.maxHeight)
        B = this.maxHeight;
    mini.setSize(this.proxy, _, B)
},
$vRk: function ($) {
    var _ = L05(this.proxy);
    jQuery(this.proxy).remove();
    this.proxy = null;
    this.elBox = null;
    this[RG$](_.width);
    this[XS9m](_.height);
    delete this._width;
    delete this._height
},
destroy: function ($) {
    Ej(window, "resize", this.K6Wd, this);
    if (this.YyCo) {
        jQuery(this.YyCo).remove();
        this.YyCo = null
    }
    if (this.shadowEl) {
        jQuery(this.shadowEl).remove();
        this.shadowEl = null
    }
    Hjg[Ov][Yr3P][R05g](this, $)
},
getAttrs: function ($) {
    var _ = Hjg[Ov][RH][R05g](this, $);
    mini[A5ac]($, _, ["modalStyle"]);
    mini[QRH]($, _, ["showModal", "showShadow", "allowDrag", "allowResize", "showMaxButton", "showMinButton"]);
    mini[ClW]($, _, ["minWidth", "minHeight", "maxWidth", "maxHeight"]);
    return _
}
});
H58(Hjg, "window");
mini.MessageBox = {
    alertTitle: "\u63d0\u9192",
    confirmTitle: "\u786e\u8ba4",
    prompTitle: "\u8f93\u5165",
    prompMessage: "\u8bf7\u8f93\u5165\u5185\u5bb9\uff1a",
    buttonText: {
        ok: "\u786e\u5b9a",
        cancel: "\u53d6\u6d88",
        yes: "\u662f",
        no: "\u5426"
    },
    show: function (F) {
        F = mini.copyTo({
            width: "auto",
            height: "auto",
            showModal: true,
            minWidth: 150,
            maxWidth: 800,
            minHeight: 100,
            maxHeight: 350,
            title: "",
            titleIcon: "",
            iconCls: "",
            iconStyle: "",
            message: "",
            html: "",
            spaceStyle: "margin-right:15px",
            showCloseButton: true,
            buttons: null,
            buttonWidth: 55,
            callback: null
        }, F);
        var I = F.callback,
		C = new Hjg();
        C.setBodyStyle("overflow:hidden");
        C.setShowModal(F[Rsza]);
        C.setTitle(F.title || "");
        C.setIconCls(F.titleIcon);
        C.setShowCloseButton(F[NVR1]);
        var J = C.uid + "$table",
		N = C.uid + "$content",
		L = "<div class=\"" + F.iconCls + "\" style=\"" + F[Jhs] + "\"></div>",
		Q = "<table class=\"mini-messagebox-table\" id=\"" + J + "\" style=\"\" cellspacing=\"0\" cellpadding=\"0\"><tr><td>" + L + "</td><td id=\"" + N + "\" style=\"text-align:center;padding:8px;padding-left:0;\">" + (F.message || "") + "</td></tr></table>",
		_ = "<div class=\"mini-messagebox-content\"></div>" + "<div class=\"mini-messagebox-buttons\"></div>";
        C.Jo4.innerHTML = _;
        var M = C.Jo4.firstChild;
        if (F.html) {
            if (typeof F.html == "string")
                M.innerHTML = F.html;
            else if (mini.isElement(F.html))
                M.appendChild(F.html)
        } else
            M.innerHTML = Q;
        C._Buttons = [];
        var P = C.Jo4.lastChild;
        if (F.buttons && F.buttons.length > 0) {
            for (var H = 0, D = F.buttons.length; H < D; H++) {
                var E = F.buttons[H],
				K = mini.MessageBox.buttonText[E],
				$ = new RsJi();
                $[T0B](K);
                $[RG$](F.buttonWidth);
                $[Tlr9](P);
                $.action = E;
                $.on("click", function (_) {
                    var $ = _.sender;
                    if (I)
                        I($.action);
                    mini.MessageBox.hide(C)
                });
                if (H != D - 1)
                    $.setStyle(F.spaceStyle);
                C._Buttons.push($)
            }
        } else
            P.style.display = "none";
        C.setMinWidth(F.minWidth);
        C.setMinHeight(F.minHeight);
        C.setMaxWidth(F.maxWidth);
        C.setMaxHeight(F.maxHeight);
        C[RG$](F.width);
        C[XS9m](F.height);
        C.show();
        var A = C[QRh]();
        C[RG$](A);
        var B = document.getElementById(J);
        if (B)
            B.style.width = "100%";
        var G = document.getElementById(N);
        if (G)
            G.style.width = "100%";
        var O = C._Buttons[0];
        if (O)
            O.focus();
        else
            C.focus();
        C.on("beforebuttonclick", function ($) {
            if (I)
                I("close");
            $.cancel = true;
            mini.MessageBox.hide(C)
        });
        Boy(C.el, "keydown", function ($) {
            if ($.keyCode == 27) {
                if (I)
                    I("close");
                $.cancel = true;
                mini.MessageBox.hide(C)
            }
        });
        return C.uid
    },
    hide: function (C) {
        if (!C)
            return;
        var _ = typeof C == "object" ? C : mini.getbyUID(C);
        if (!_)
            return;
        for (var $ = 0, A = _._Buttons.length; $ < A; $++) {
            var B = _._Buttons[$];
            B[Yr3P]()
        }
        _._Buttons = null;
        _[Yr3P]()
    },
    alert: function (A, _, $) {
        return mini.MessageBox.show({
            minWidth: 250,
            title: _ || mini.MessageBox.alertTitle,
            buttons: ["ok"],
            message: A,
            iconCls: "mini-messagebox-warning",
            callback: $
        })
    },
    confirm: function (A, _, $) {
        return mini.MessageBox.show({
            minWidth: 250,
            title: _ || mini.MessageBox.confirmTitle,
            buttons: ["ok", "cancel"],
            message: A,
            iconCls: "mini-messagebox-question",
            callback: $
        })
    },
    prompt: function (C, B, A, _) {
        var F = "prompt$" + new Date().getTime(),
		E = C || mini.MessageBox.promptMessage;
        if (_)
            E = E + "<br/><textarea id=\"" + F + "\" style=\"width:200px;height:60px;margin-top:3px;\"></textarea>";
        else
            E = E + "<br/><input id=\"" + F + "\" type=\"text\" style=\"width:200px;margin-top:3px;\"/>";
        var D = mini.MessageBox.show({
            title: B || mini.MessageBox.promptTitle,
            buttons: ["ok", "cancel"],
            width: 250,
            html: "<div style=\"padding:5px;padding-left:10px;\">" + E + "</div>",
            callback: function (_) {
                var $ = document.getElementById(F);
                if (A)
                    A(_, $.value)
            }
        }),
		$ = document.getElementById(F);
        $.focus();
        return D
    },
    loading: function (_, $) {
        return mini.MessageBox.show({
            minHeight: 50,
            title: $,
            showCloseButton: false,
            message: _,
            iconCls: "mini-messagebox-waiting"
        })
    }
};
mini.alert = mini.MessageBox.alert;
mini.confirm = mini.MessageBox.confirm;
mini.prompt = mini.MessageBox.prompt;
mini.loading = mini.MessageBox.loading;
mini.showMessageBox = mini.MessageBox.show;
mini.hideMessageBox = mini.MessageBox.hide;
Bra = function () {
    this.XSoc();
    Bra[Ov][FaWb][R05g](this)
};
ZPOi(Bra, Jva, {
    width: 300,
    height: 180,
    vertical: false,
    allowResize: true,
    pane1: null,
    pane2: null,
    showHandleButton: true,
    handlerStyle: "",
    handlerCls: "",
    handlerSize: 5,
    uiCls: "mini-splitter",
    _create: function () {
        this.el = document.createElement("div");
        this.el.className = "mini-splitter";
        this.el.innerHTML = "<div class=\"mini-splitter-border\"><div id=\"1\" class=\"mini-splitter-pane mini-splitter-pane1\"></div><div id=\"2\" class=\"mini-splitter-pane mini-splitter-pane2\"></div><div class=\"mini-splitter-handler\"></div></div>";
        this.KDCb = this.el.firstChild;
        this.XuAm = this.KDCb.firstChild;
        this.W35J = this.KDCb.childNodes[1];
        this.GFdc = this.KDCb.lastChild
    },
    _initEvents: function () {
        VMPY(function () {
            Boy(this.el, "click", this.Qtm, this);
            Boy(this.el, "mousedown", this.CgJ, this)
        }, this)
    },
    XSoc: function () {
        this.pane1 = {
            index: 1,
            minSize: 30,
            maxSize: 3000,
            size: "",
            showCollapseButton: false,
            cls: "",
            style: "",
            visible: true,
            expanded: true
        };
        this.pane2 = mini.copyTo({}, this.pane1);
        this.pane2.index = 2
    },
    doUpdate: function () {
        this[SA]()
    },
    doLayout: function () {
        if (!this.canLayout())
            return;
        this.GFdc.style.cursor = this[MZ] ? "" : "default";
        ZVS(this.el, "mini-splitter-vertical");
        if (this.vertical)
            E$_(this.el, "mini-splitter-vertical");
        ZVS(this.XuAm, "mini-splitter-pane1-vertical");
        ZVS(this.W35J, "mini-splitter-pane2-vertical");
        if (this.vertical) {
            E$_(this.XuAm, "mini-splitter-pane1-vertical");
            E$_(this.W35J, "mini-splitter-pane2-vertical")
        }
        ZVS(this.GFdc, "mini-splitter-handler-vertical");
        if (this.vertical)
            E$_(this.GFdc, "mini-splitter-handler-vertical");
        DaZ(this.XuAm, this.pane1.style);
        DaZ(this.W35J, this.pane2.style);
        var B = this[UT](true),
		_ = this[QRh](true);
        if (!jQuery.boxModel) {
            var Q = _t(this.KDCb);
            B = B + Q.top + Q.bottom;
            _ = _ + Q.left + Q.right
        }
        this.KDCb.style.width = _ + "px";
        this.KDCb.style.height = B + "px";
        var $ = this.XuAm,
		C = this.W35J,
		G = jQuery($),
		I = jQuery(C);
        $.style.display = C.style.display = this.GFdc.style.display = "";
        var D = this[I2XT];
        this.pane1.size = String(this.pane1.size);
        this.pane2.size = String(this.pane2.size);
        var F = parseFloat(this.pane1.size),
		H = parseFloat(this.pane2.size),
		O = isNaN(F),
		T = isNaN(H),
		N = !isNaN(F) && this.pane1.size.indexOf("%") != -1,
		R = !isNaN(H) && this.pane2.size.indexOf("%") != -1,
		J = !O && !N,
		M = !T && !R,
		P = this.vertical ? B - this[I2XT] : _ - this[I2XT],
		K = p2Size = 0;
        if (O || T) {
            if (O && T) {
                K = parseInt(P / 2);
                p2Size = P - K
            } else if (J) {
                K = F;
                p2Size = P - K
            } else if (N) {
                K = parseInt(P * F / 100);
                p2Size = P - K
            } else if (M) {
                p2Size = H;
                K = P - p2Size
            } else if (R) {
                p2Size = parseInt(P * H / 100);
                K = P - p2Size
            }
        } else if (N && M) {
            p2Size = H;
            K = P - p2Size
        } else if (J && R) {
            K = F;
            p2Size = P - K
        } else {
            var L = F + H;
            K = parseInt(P * F / L);
            p2Size = P - K
        }
        if (K > this.pane1.maxSize) {
            K = this.pane1.maxSize;
            p2Size = P - K
        }
        if (p2Size > this.pane2.maxSize) {
            p2Size = this.pane2.maxSize;
            K = P - p2Size
        }
        if (K < this.pane1.minSize) {
            K = this.pane1.minSize;
            p2Size = P - K
        }
        if (p2Size < this.pane2.minSize) {
            p2Size = this.pane2.minSize;
            K = P - p2Size
        }
        if (this.pane1.expanded == false) {
            p2Size = P;
            K = 0;
            $.style.display = "none"
        } else if (this.pane2.expanded == false) {
            K = P;
            p2Size = 0;
            C.style.display = "none"
        }
        if (this.pane1.visible == false) {
            p2Size = P + D;
            K = D = 0;
            $.style.display = "none";
            this.GFdc.style.display = "none"
        } else if (this.pane2.visible == false) {
            K = P + D;
            p2Size = D = 0;
            C.style.display = "none";
            this.GFdc.style.display = "none"
        }
        if (this.vertical) {
            X9c($, _);
            X9c(C, _);
            G2Mf($, K);
            G2Mf(C, p2Size);
            C.style.top = (K + D) + "px";
            this.GFdc.style.left = "0px";
            this.GFdc.style.top = K + "px";
            X9c(this.GFdc, _);
            G2Mf(this.GFdc, this[I2XT]);
            $.style.left = "0px";
            C.style.left = "0px"
        } else {
            X9c($, K);
            X9c(C, p2Size);
            G2Mf($, B);
            G2Mf(C, B);
            C.style.left = (K + D) + "px";
            this.GFdc.style.top = "0px";
            this.GFdc.style.left = K + "px";
            X9c(this.GFdc, this[I2XT]);
            G2Mf(this.GFdc, B);
            $.style.top = "0px";
            C.style.top = "0px"
        }
        var S = "<div class=\"mini-splitter-handler-buttons\">";
        if (!this.pane1.expanded || !this.pane2.expanded) {
            if (!this.pane1.expanded) {
                if (this.pane1[PZh1])
                    S += "<a id=\"1\" class=\"mini-splitter-pane2-button\"></a>"
            } else if (this.pane2[PZh1])
                S += "<a id=\"2\" class=\"mini-splitter-pane1-button\"></a>"
        } else {
            if (this.pane1[PZh1])
                S += "<a id=\"1\" class=\"mini-splitter-pane1-button\"></a>";
            if (this[MZ])
                if ((!this.pane1[PZh1] && !this.pane2[PZh1]))
                    S += "<span class=\"mini-splitter-resize-button\"></span>";
        if (this.pane2[PZh1])
            S += "<a id=\"2\" class=\"mini-splitter-pane2-button\"></a>"
    }
    S += "</div>";
    this.GFdc.innerHTML = S;
    var E = this.GFdc.firstChild;
    E.style.display = this.showHandleButton ? "" : "none";
    var A = L05(E);
    if (this.vertical)
        E.style.marginLeft = -A.width / 2 + "px";
    else
        E.style.marginTop = -A.height / 2 + "px";
    if (!this.pane1.visible || !this.pane2.visible || !this.pane1.expanded || !this.pane2.expanded)
        E$_(this.GFdc, "mini-splitter-nodrag");
    else
        ZVS(this.GFdc, "mini-splitter-nodrag");
    mini.layout(this.KDCb)
},
getPaneBox: function ($) {
    var _ = this.getPaneEl($);
    if (!_)
        return null;
    return L05(_)
},
getPane: function ($) {
    if ($ == 1)
        return this.pane1;
    else if ($ == 2)
        return this.pane2;
    return $
},
setPanes: function (_) {
    if (!mini.isArray(_))
        return;
    for (var $ = 0; $ < 2; $++) {
        var A = _[$];
        this.updatePane($ + 1, A)
    }
},
getPaneEl: function ($) {
    if ($ == 1)
        return this.XuAm;
    return this.W35J
},
updatePane: function (_, F) {
    var $ = this.getPane(_);
    if (!$)
        return;
    mini.copyTo($, F);
    var B = this.getPaneEl(_),
		C = $.body;
    delete $.body;
    if (C) {
        if (!mini.isArray(C))
            C = [C];
        for (var A = 0, E = C.length; A < E; A++)
            mini.append(B, C[A])
    }
    if ($.bodyParent) {
        var D = $.bodyParent;
        while (D.firstChild)
            B.appendChild(D.firstChild)
    }
    delete $.bodyParent;
    this[YaK]()
},
setShowHandleButton: function ($) {
    this.showHandleButton = $;
    this[YaK]()
},
getShowHandleButton: function ($) {
    return this.showHandleButton
},
setVertical: function ($) {
    this.vertical = $;
    this[YaK]()
},
getVertical: function () {
    return this.vertical
},
expandPane: function (_) {
    var $ = this.getPane(_);
    if (!$)
        return;
    $.expanded = true;
    this[YaK]()
},
collapsePane: function (_) {
    var $ = this.getPane(_);
    if (!$)
        return;
    $.expanded = false;
    var A = $ == this.pane1 ? this.pane2 : this.pane1;
    if (A.expanded == false) {
        A.expanded = true;
        A.visible = true
    }
    this[YaK]()
},
togglePane: function (_) {
    var $ = this.getPane(_);
    if (!$)
        return;
    if ($.expanded)
        this.collapsePane($);
    else
        this.expandPane($)
},
showPane: function (_) {
    var $ = this.getPane(_);
    if (!$)
        return;
    $.visible = true;
    this[YaK]()
},
hidePane: function (_) {
    var $ = this.getPane(_);
    if (!$)
        return;
    $.visible = false;
    var A = $ == this.pane1 ? this.pane2 : this.pane1;
    if (A.visible == false) {
        A.expanded = true;
        A.visible = true
    }
    this[YaK]()
},
setAllowResize: function ($) {
    if (this[MZ] != $) {
        this[MZ] = $;
        this[SA]()
    }
},
getAllowResize: function () {
    return this[MZ]
},
setHandlerSize: function ($) {
    if (this[I2XT] != $) {
        this[I2XT] = $;
        this[SA]()
    }
},
getHandlerSize: function () {
    return this[I2XT]
},
Qtm: function (B) {
    var A = B.target;
    if (!Uqe(this.GFdc, A))
        return;
    var _ = parseInt(A.id),
		$ = this.getPane(_),
		B = {
		    pane: $,
		    paneIndex: _,
		    cancel: false
		};
    if ($.expanded)
        this.fire("beforecollapse", B);
    else
        this.fire("beforeexpand", B);
    if (B.cancel == true)
        return;
    if (A.className == "mini-splitter-pane1-button")
        this.togglePane(_);
    else if (A.className == "mini-splitter-pane2-button")
        this.togglePane(_)
},
FWY: function ($, _) {
    this.fire("buttonclick", {
        pane: $,
        index: this.pane1 == $ ? 1 : 2,
        htmlEvent: _
    })
},
onButtonClick: function (_, $) {
    this.on("buttonclick", _, $)
},
CgJ: function (A) {
    var _ = A.target;
    if (!this[MZ])
        return;
    if (!this.pane1.visible || !this.pane2.visible || !this.pane1.expanded || !this.pane2.expanded)
        return;
    if (Uqe(this.GFdc, _))
        if (_.className == "mini-splitter-pane1-button" || _.className == "mini-splitter-pane2-button");
        else {
            var $ = this.BiL1();
            $.start(A)
        }
},
BiL1: function () {
    if (!this.drag)
        this.drag = new mini.Drag({
            capture: true,
            onStart: mini.createDelegate(this.IA, this),
            onMove: mini.createDelegate(this.XIeJ, this),
            onStop: mini.createDelegate(this.$vRk, this)
        });
    return this.drag
},
IA: function ($) {
    this.W8da = mini.append(document.body, "<div class=\"mini-resizer-mask\"></div>");
    this.R8 = mini.append(document.body, "<div class=\"mini-proxy\"></div>");
    this.R8.style.cursor = this.vertical ? "n-resize" : "w-resize";
    this.handlerBox = L05(this.GFdc);
    this.elBox = L05(this.KDCb, true);
    X7y(this.R8, this.handlerBox)
},
XIeJ: function (C) {
    if (!this.handlerBox)
        return;
    if (!this.elBox)
        this.elBox = L05(this.KDCb, true);
    var B = this.elBox.width,
		D = this.elBox.height,
		E = this[I2XT],
		I = this.vertical ? D - this[I2XT] : B - this[I2XT],
		A = this.pane1.minSize,
		F = this.pane1.maxSize,
		$ = this.pane2.minSize,
		G = this.pane2.maxSize;
    if (this.vertical == true) {
        var _ = C.now[1] - C.init[1],
			H = this.handlerBox.y + _;
        if (H - this.elBox.y > F)
            H = this.elBox.y + F;
        if (H + this.handlerBox.height < this.elBox.bottom - G)
            H = this.elBox.bottom - G - this.handlerBox.height;
        if (H - this.elBox.y < A)
            H = this.elBox.y + A;
        if (H + this.handlerBox.height > this.elBox.bottom - $)
            H = this.elBox.bottom - $ - this.handlerBox.height;
        mini.setY(this.R8, H)
    } else {
        var J = C.now[0] - C.init[0],
			K = this.handlerBox.x + J;
        if (K - this.elBox.x > F)
            K = this.elBox.x + F;
        if (K + this.handlerBox.width < this.elBox.right - G)
            K = this.elBox.right - G - this.handlerBox.width;
        if (K - this.elBox.x < A)
            K = this.elBox.x + A;
        if (K + this.handlerBox.width > this.elBox.right - $)
            K = this.elBox.right - $ - this.handlerBox.width;
        mini.setX(this.R8, K)
    }
},
$vRk: function (_) {
    var $ = this.elBox.width,
		B = this.elBox.height,
		C = this[I2XT],
		D = parseFloat(this.pane1.size),
		E = parseFloat(this.pane2.size),
		I = isNaN(D),
		N = isNaN(E),
		J = !isNaN(D) && this.pane1.size.indexOf("%") != -1,
		M = !isNaN(E) && this.pane2.size.indexOf("%") != -1,
		G = !I && !J,
		K = !N && !M,
		L = this.vertical ? B - this[I2XT] : $ - this[I2XT],
		A = L05(this.R8),
		H = A.x - this.elBox.x,
		F = L - H;
    if (this.vertical) {
        H = A.y - this.elBox.y;
        F = L - H
    }
    if (I || N) {
        if (I && N) {
            D = parseFloat(H / L * 100).toFixed(1);
            this.pane1.size = D + "%"
        } else if (G) {
            D = H;
            this.pane1.size = D
        } else if (J) {
            D = parseFloat(H / L * 100).toFixed(1);
            this.pane1.size = D + "%"
        } else if (K) {
            E = F;
            this.pane2.size = E
        } else if (M) {
            E = parseFloat(F / L * 100).toFixed(1);
            this.pane2.size = E + "%"
        }
    } else if (J && K)
        this.pane2.size = F;
    else if (G && M)
        this.pane1.size = H;
    else {
        this.pane1.size = parseFloat(H / L * 100).toFixed(1);
        this.pane2.size = 100 - this.pane1.size
    }
    jQuery(this.R8).remove();
    jQuery(this.W8da).remove();
    this.W8da = null;
    this.R8 = null;
    this.elBox = this.handlerBox = null;
    this[SA]()
},
getAttrs: function (B) {
    var G = Bra[Ov][RH][R05g](this, B);
    mini[QRH](B, G, ["allowResize", "vertical", "showHandleButton"]);
    mini[ClW](B, G, ["handlerSize"]);
    var A = [],
		F = mini[SY0](B);
    for (var _ = 0, E = 2; _ < E; _++) {
        var C = F[_],
			D = jQuery(C),
			$ = {};
        A.push($);
        if (!C)
            continue;
        $.style = C.style.cssText;
        mini[A5ac](C, $, ["cls", "size"]);
        mini[QRH](C, $, ["visible", "expanded", "showCollapseButton"]);
        mini[ClW](C, $, ["minSize", "maxSize", "handlerSize"]);
        $.bodyParent = C
    }
    G.panes = A;
    return G
}
});
H58(Bra, "splitter");
Ll = function () {
    this.regions = [];
    this.regionMap = {};
    Ll[Ov][FaWb][R05g](this)
};
ZPOi(Ll, Jva, {
    regions: [],
    splitSize: 5,
    collapseWidth: 28,
    collapseHeight: 25,
    regionWidth: 150,
    regionHeight: 80,
    regionMinWidth: 50,
    regionMinHeight: 25,
    regionMaxWidth: 2000,
    regionMaxHeight: 2000,
    uiCls: "mini-layout",
    _create: function () {
        this.el = document.createElement("div");
        this.el.className = "mini-layout";
        this.el.innerHTML = "<div class=\"mini-layout-border\"></div>";
        this.KDCb = this.el.firstChild;
        this[YaK]()
    },
    _initEvents: function () {
        VMPY(function () {
            Boy(this.el, "click", this.Qtm, this);
            Boy(this.el, "mousedown", this.CgJ, this);
            Boy(this.el, "mouseover", this.QwgP, this);
            Boy(this.el, "mouseout", this.S0ud, this);
            Boy(document, "mousedown", this.M0v, this)
        }, this)
    },
    getRegionEl: function ($) {
        var $ = this[I6sv]($);
        if (!$)
            return null;
        return $._el
    },
    getRegionHeaderEl: function ($) {
        var $ = this[I6sv]($);
        if (!$)
            return null;
        return $._header
    },
    getRegionBodyEl: function ($) {
        var $ = this[I6sv]($);
        if (!$)
            return null;
        return $._body
    },
    getRegionSplitEl: function ($) {
        var $ = this[I6sv]($);
        if (!$)
            return null;
        return $._split
    },
    getRegionProxyEl: function ($) {
        var $ = this[I6sv]($);
        if (!$)
            return null;
        return $._proxy
    },
    getRegionBox: function (_) {
        var $ = this[QWc0](_);
        if ($)
            return L05($);
        return null
    },
    getRegion: function ($) {
        if (typeof $ == "string")
            return this.regionMap[$];
        return $
    },
    _RaG: function (_, B) {
        var D = _.buttons;
        for (var $ = 0, A = D.length; $ < A; $++) {
            var C = D[$];
            if (C.name == B)
                return C
        }
    },
    _0: function (_) {
        var $ = mini.copyTo({
            region: "",
            title: "",
            iconCls: "",
            iconStyle: "",
            showCloseButton: false,
            showCollapseButton: true,
            buttons: [{
                name: "close",
                cls: "mini-tools-close",
                html: "",
                visible: false
            }, {
                name: "collapse",
                cls: "mini-tools-collapse",
                html: "",
                visible: true
            }
				],
            showSplitIcon: false,
            showSplit: true,
            showHeader: true,
            splitSize: this.splitSize,
            collapseSize: this.collapseWidth,
            width: this.regionWidth,
            height: this.regionHeight,
            minWidth: this.regionMinWidth,
            minHeight: this.regionMinHeight,
            maxWidth: this.regionMaxWidth,
            maxHeight: this.regionMaxHeight,
            allowResize: true,
            cls: "",
            style: "",
            headerCls: "",
            headerStyle: "",
            bodyCls: "",
            bodyStyle: "",
            visible: true,
            expanded: true
        }, _);
        return $
    },
    OPq: function ($) {
        var $ = this[I6sv]($);
        if (!$)
            return;
        mini.append(this.KDCb, "<div id=\"" + $.region + "\" class=\"mini-layout-region\"><div class=\"mini-layout-region-header\" style=\"" + $.headerStyle + "\"></div><div class=\"mini-layout-region-body\" style=\"" + $.bodyStyle + "\"></div></div>");
        $._el = this.KDCb.lastChild;
        $._header = $._el.firstChild;
        $._body = $._el.lastChild;
        if ($.cls)
            E$_($._el, $.cls);
        if ($.style)
            DaZ($._el, $.style);
        E$_($._el, "mini-layout-region-" + $.region);
        if ($.region != "center") {
            mini.append(this.KDCb, "<div uid=\"" + this.uid + "\" id=\"" + $.region + "\" class=\"mini-layout-split\"><div class=\"mini-layout-spliticon\"></div></div>");
            $._split = this.KDCb.lastChild;
            E$_($._split, "mini-layout-split-" + $.region)
        }
        if ($.region != "center") {
            mini.append(this.KDCb, "<div id=\"" + $.region + "\" class=\"mini-layout-proxy\"></div>");
            $._proxy = this.KDCb.lastChild;
            E$_($._proxy, "mini-layout-proxy-" + $.region)
        }
    },
    setRegions: function (A) {
        if (!mini.isArray(A))
            return;
        for (var $ = 0, _ = A.length; $ < _; $++)
            this.addRegion(A[$])
    },
    addRegion: function (D, $) {
        var G = D;
        D = this._0(D);
        if (!D.region)
            D.region = "center";
        D.region = D.region.toLowerCase();
        if (D.region == "center" && G && !G.showHeader)
            D.showHeader = false;
        if (D.region == "north" || D.region == "south")
            if (!G.collapseSize)
                D.collapseSize = this.collapseHeight;
    this.$fs(D);
    if (typeof $ != "number")
        $ = this.regions.length;
    var A = this.regionMap[D.region];
    if (A)
        return;
    this.regions.insert($, D);
    this.regionMap[D.region] = D;
    this.OPq(D);
    var B = this.getRegionBodyEl(D),
		C = D.body;
    delete D.body;
    if (C) {
        if (!mini.isArray(C))
            C = [C];
        for (var _ = 0, F = C.length; _ < F; _++)
            mini.append(B, C[_])
    }
    if (D.bodyParent) {
        var E = D.bodyParent;
        while (E.firstChild)
            B.appendChild(E.firstChild)
    }
    delete D.bodyParent;
    this[YaK]()
},
removeRegion: function ($) {
    var $ = this[I6sv]($);
    if (!$)
        return;
    this.regions.remove($);
    delete this.regionMap[$.region];
    jQuery($._el).remove();
    jQuery($._split).remove();
    jQuery($._proxy).remove();
    this[YaK]()
},
moveRegion: function (A, $) {
    var A = this[I6sv](A);
    if (!A)
        return;
    var _ = this.regions[$];
    if (!_ || _ == A)
        return;
    this.regions.remove(A);
    var $ = this.region.indexOf(_);
    this.regions.insert($, A);
    this[YaK]()
},
$fs: function ($) {
    var _ = this._RaG($, "close");
    _.visible = $[NVR1];
    _ = this._RaG($, "collapse");
    _.visible = $[PZh1];
    if ($.width < $.minWidth)
        $.width = mini.minWidth;
    if ($.width > $.maxWidth)
        $.width = mini.maxWidth;
    if ($.height < $.minHeight)
        $.height = mini.minHeight;
    if ($.height > $.maxHeight)
        $.height = mini.maxHeight
},
updateRegion: function ($, _) {
    $ = this[I6sv]($);
    if (!$)
        return;
    if (_)
        delete _.region;
    mini.copyTo($, _);
    this.$fs($);
    this[YaK]()
},
expandRegion: function ($) {
    $ = this[I6sv]($);
    if (!$)
        return;
    $.expanded = true;
    this[YaK]()
},
collapseRegion: function ($) {
    $ = this[I6sv]($);
    if (!$)
        return;
    $.expanded = false;
    this[YaK]()
},
toggleRegion: function ($) {
    $ = this[I6sv]($);
    if (!$)
        return;
    if ($.expanded)
        this.collapseRegion($);
    else
        this.expandRegion($)
},
showRegion: function ($) {
    $ = this[I6sv]($);
    if (!$)
        return;
    $.visible = true;
    this[YaK]()
},
hideRegion: function ($) {
    $ = this[I6sv]($);
    if (!$)
        return;
    $.visible = false;
    this[YaK]()
},
isExpandRegion: function ($) {
    $ = this[I6sv]($);
    if (!$)
        return null;
    return this.region.expanded
},
isVisibleRegion: function ($) {
    $ = this[I6sv]($);
    if (!$)
        return null;
    return this.region.visible
},
$Sd: function ($) {
    $ = this[I6sv]($);
    var _ = {
        region: $,
        cancel: false
    };
    if ($.expanded) {
        this.fire("BeforeCollapse", _);
        if (_.cancel == false)
            this.collapseRegion($)
    } else {
        this.fire("BeforeExpand", _);
        if (_.cancel == false)
            this.expandRegion($)
    }
},
RKzW: function (_) {
    var $ = $Rz(_.target, "mini-layout-proxy");
    return $
},
C4gQ: function (_) {
    var $ = $Rz(_.target, "mini-layout-region");
    return $
},
Qtm: function (D) {
    if (this.W0Y)
        return;
    var A = this.RKzW(D);
    if (A) {
        var _ = A.id,
			C = $Rz(D.target, "mini-tools-collapse");
        if (C)
            this.$Sd(_);
        else
            this.W1P(_)
    }
    var B = this.C4gQ(D);
    if (B && $Rz(D.target, "mini-layout-region-header")) {
        _ = B.id,
			C = $Rz(D.target, "mini-tools-collapse");
        if (C)
            this.$Sd(_);
        var $ = $Rz(D.target, "mini-tools-close");
        if ($)
            this.updateRegion(_, {
                visible: false
            })
    }
    if (Mjm(D.target, "mini-layout-spliticon")) {
        _ = D.target.parentNode.id;
        this.$Sd(_)
    }
},
FWY: function (_, A, $) {
    this.fire("buttonclick", {
        htmlEvent: $,
        region: _,
        button: A,
        index: this.buttons.indexOf(A),
        name: A.name
    })
},
Pg: function (_, A, $) {
    this.fire("buttonmousedown", {
        htmlEvent: $,
        region: _,
        button: A,
        index: this.buttons.indexOf(A),
        name: A.name
    })
},
hoverProxyEl: null,
QwgP: function (_) {
    var $ = this.RKzW(_);
    if ($) {
        E$_($, "mini-layout-proxy-hover");
        this.hoverProxyEl = $
    }
},
S0ud: function ($) {
    if (this.hoverProxyEl)
        ZVS(this.hoverProxyEl, "mini-layout-proxy-hover");
    this.hoverProxyEl = null
},
onButtonClick: function (_, $) {
    this.on("buttonclick", _, $)
},
onButtonMouseDown: function (_, $) {
    this.on("buttonmousedown", _, $)
}
});
mini.copyTo(Ll.prototype, {
    GGg: function (_, A) {
        var C = "<div class=\"mini-tools\">";
        if (A)
            C += "<span class=\"mini-tools-collapse\"></span>";
        else
            for (var $ = _.buttons.length - 1; $ >= 0; $--) {
                var B = _.buttons[$];
                C += "<span class=\"" + B.cls + "\" style=\"";
                C += B.style + ";" + (B.visible ? "" : "display:none;") + "\">" + B.html + "</span>"
            }
    C += "</div>";
    C += "<div class=\"mini-layout-region-icon " + _.iconCls + "\" style=\"" + _[Jhs] + ";" + ((_[Jhs] || _.iconCls) ? "" : "display:none;") + "\"></div>";
    C += "<div class=\"mini-layout-region-title\">" + _.title + "</div>";
    return C
},
doUpdate: function () {
    for (var $ = 0, E = this.regions.length; $ < E; $++) {
        var B = this.regions[$],
			_ = B.region,
			A = B._el,
			D = B._split,
			C = B._proxy;
        B._header.style.display = B.showHeader ? "" : "none";
        B._header.innerHTML = this.GGg(B);
        if (B._proxy)
            B._proxy.innerHTML = this.GGg(B, true);
        if (D) {
            ZVS(D, "mini-layout-split-nodrag");
            if (B.expanded == false || !B[MZ])
                E$_(D, "mini-layout-split-nodrag")
        }
    }
    this[SA]()
},
doLayout: function () {
    if (!this.canLayout())
        return;
    if (this.W0Y)
        return;
    var C = Cop(this.el, true),
		_ = EvDb(this.el, true),
		D = {
		    x: 0,
		    y: 0,
		    width: _,
		    height: C
		},
		I = this.regions.clone(),
		P = this[I6sv]("center");
    I.remove(P);
    if (P)
        I.push(P);
    for (var K = 0, H = I.length; K < H; K++) {
        var E = I[K];
        E._Expanded = false;
        ZVS(E._el, "mini-layout-popup");
        var A = E.region,
			L = E._el,
			F = E._split,
			G = E._proxy;
        if (E.visible == false) {
            L.style.display = "none";
            if (A != "center")
                F.style.display = G.style.display = "none";
            continue
        }
        L.style.display = "";
        if (A != "center")
            F.style.display = G.style.display = "";
        var R = D.x,
			O = D.y,
			_ = D.width,
			C = D.height,
			B = E.width,
			J = E.height;
        if (!E.expanded)
            if (A == "west" || A == "east") {
                B = E.collapseSize;
                X9c(L, E.width)
            } else if (A == "north" || A == "south") {
                J = E.collapseSize;
                G2Mf(L, E.height)
            }
    switch (A) {
        case "north":
            C = J;
            D.y += J;
            D.height -= J;
            break;
        case "south":
            C = J;
            O = D.y + D.height - J;
            D.height -= J;
            break;
        case "west":
            _ = B;
            D.x += B;
            D.width -= B;
            break;
        case "east":
            _ = B;
            R = D.x + D.width - B;
            D.width -= B;
            break;
        case "center":
            break;
        default:
            continue
    }
    if (_ < 0)
        _ = 0;
    if (C < 0)
        C = 0;
    if (A == "west" || A == "east")
        G2Mf(L, C);
    if (A == "north" || A == "south")
        X9c(L, _);
    var N = "left:" + R + "px;top:" + O + "px;",
			$ = L;
    if (!E.expanded) {
        $ = G;
        L.style.top = "-100px";
        L.style.left = "-1500px"
    } else if (G) {
        G.style.left = "-1500px";
        G.style.top = "-100px"
    }
    $.style.left = R + "px";
    $.style.top = O + "px";
    X9c($, _);
    G2Mf($, C);
    var M = jQuery(E._el).height(),
			Q = E.showHeader ? jQuery(E._header).outerHeight() : 0;
    G2Mf(E._body, M - Q);
    if (A == "center")
        continue;
    B = J = E.splitSize;
    R = D.x,
			O = D.y,
			_ = D.width,
			C = D.height;
    switch (A) {
        case "north":
            C = J;
            D.y += J;
            D.height -= J;
            break;
        case "south":
            C = J;
            O = D.y + D.height - J;
            D.height -= J;
            break;
        case "west":
            _ = B;
            D.x += B;
            D.width -= B;
            break;
        case "east":
            _ = B;
            R = D.x + D.width - B;
            D.width -= B;
            break;
        case "center":
            break
    }
    if (_ < 0)
        _ = 0;
    if (C < 0)
        C = 0;
    F.style.left = R + "px";
    F.style.top = O + "px";
    X9c(F, _);
    G2Mf(F, C);
    if (E.showSplit && E.expanded && E[MZ] == true)
        ZVS(F, "mini-layout-split-nodrag");
    else
        E$_(F, "mini-layout-split-nodrag");
    F.firstChild.style.display = E.showSplitIcon ? "block" : "none";
    if (E.expanded)
        ZVS(F.firstChild, "mini-layout-spliticon-collapse");
    else
        E$_(F.firstChild, "mini-layout-spliticon-collapse")
}
mini.layout(this.KDCb)
},
CgJ: function (B) {
    if (this.W0Y)
        return;
    if ($Rz(B.target, "mini-layout-split")) {
        var A = jQuery(B.target).attr("uid");
        if (A != this.uid)
            return;
        var _ = this[I6sv](B.target.id);
        if (_.expanded == false || !_[MZ])
            return;
        this.dragRegion = _;
        var $ = this.BiL1();
        $.start(B)
    }
},
BiL1: function () {
    if (!this.drag)
        this.drag = new mini.Drag({
            capture: true,
            onStart: mini.createDelegate(this.IA, this),
            onMove: mini.createDelegate(this.XIeJ, this),
            onStop: mini.createDelegate(this.$vRk, this)
        });
    return this.drag
},
IA: function ($) {
    this.W8da = mini.append(document.body, "<div class=\"mini-resizer-mask\"></div>");
    this.R8 = mini.append(document.body, "<div class=\"mini-proxy\"></div>");
    this.R8.style.cursor = "n-resize";
    if (this.dragRegion.region == "west" || this.dragRegion.region == "east")
        this.R8.style.cursor = "w-resize";
    this.splitBox = L05(this.dragRegion._split);
    X7y(this.R8, this.splitBox);
    this.elBox = L05(this.el, true)
},
XIeJ: function (C) {
    var I = C.now[0] - C.init[0],
		V = this.splitBox.x + I,
		A = C.now[1] - C.init[1],
		U = this.splitBox.y + A,
		K = V + this.splitBox.width,
		T = U + this.splitBox.height,
		G = this[I6sv]("west"),
		L = this[I6sv]("east"),
		F = this[I6sv]("north"),
		D = this[I6sv]("south"),
		H = this[I6sv]("center"),
		O = G && G.visible ? G.width : 0,
		Q = L && L.visible ? L.width : 0,
		R = F && F.visible ? F.height : 0,
		J = D && D.visible ? D.height : 0,
		P = G && G.showSplit ? EvDb(G._split) : 0,
		$ = L && L.showSplit ? EvDb(L._split) : 0,
		B = F && F.showSplit ? Cop(F._split) : 0,
		S = D && D.showSplit ? Cop(D._split) : 0,
		E = this.dragRegion,
		N = E.region;
    if (N == "west") {
        var M = this.elBox.width - Q - $ - P - H.minWidth;
        if (V - this.elBox.x > M)
            V = M + this.elBox.x;
        if (V - this.elBox.x < E.minWidth)
            V = E.minWidth + this.elBox.x;
        if (V - this.elBox.x > E.maxWidth)
            V = E.maxWidth + this.elBox.x;
        mini.setX(this.R8, V)
    } else if (N == "east") {
        M = this.elBox.width - O - P - $ - H.minWidth;
        if (this.elBox.right - (V + this.splitBox.width) > M)
            V = this.elBox.right - M - this.splitBox.width;
        if (this.elBox.right - (V + this.splitBox.width) < E.minWidth)
            V = this.elBox.right - E.minWidth - this.splitBox.width;
        if (this.elBox.right - (V + this.splitBox.width) > E.maxWidth)
            V = this.elBox.right - E.maxWidth - this.splitBox.width;
        mini.setX(this.R8, V)
    } else if (N == "north") {
        var _ = this.elBox.height - J - S - B - H.minHeight;
        if (U - this.elBox.y > _)
            U = _ + this.elBox.y;
        if (U - this.elBox.y < E.minHeight)
            U = E.minHeight + this.elBox.y;
        if (U - this.elBox.y > E.maxHeight)
            U = E.maxHeight + this.elBox.y;
        mini.setY(this.R8, U)
    } else if (N == "south") {
        _ = this.elBox.height - R - B - S - H.minHeight;
        if (this.elBox.bottom - (U + this.splitBox.height) > _)
            U = this.elBox.bottom - _ - this.splitBox.height;
        if (this.elBox.bottom - (U + this.splitBox.height) < E.minHeight)
            U = this.elBox.bottom - E.minHeight - this.splitBox.height;
        if (this.elBox.bottom - (U + this.splitBox.height) > E.maxHeight)
            U = this.elBox.bottom - E.maxHeight - this.splitBox.height;
        mini.setY(this.R8, U)
    }
},
$vRk: function (B) {
    var C = L05(this.R8),
		D = this.dragRegion,
		A = D.region;
    if (A == "west") {
        var $ = C.x - this.elBox.x;
        this.updateRegion(D, {
            width: $
        })
    } else if (A == "east") {
        $ = this.elBox.right - C.right;
        this.updateRegion(D, {
            width: $
        })
    } else if (A == "north") {
        var _ = C.y - this.elBox.y;
        this.updateRegion(D, {
            height: _
        })
    } else if (A == "south") {
        _ = this.elBox.bottom - C.bottom;
        this.updateRegion(D, {
            height: _
        })
    }
    jQuery(this.R8).remove();
    this.R8 = null;
    this.elBox = this.handlerBox = null;
    jQuery(this.W8da).remove();
    this.W8da = null
},
W1P: function ($) {
    $ = this[I6sv]($);
    if ($._Expanded === true)
        this.Oh1_($);
    else
        this.$IC($)
},
$IC: function (D) {
    if (this.W0Y)
        return;
    this[SA]();
    var A = D.region,
		H = D._el;
    D._Expanded = true;
    E$_(H, "mini-layout-popup");
    var E = L05(D._proxy),
		B = L05(D._el),
		F = {};
    if (A == "east") {
        var K = E.x,
			J = E.y,
			C = E.height;
        G2Mf(H, C);
        mini.setX(H, K);
        H.style.top = D._proxy.style.top;
        var I = parseInt(H.style.left);
        F = {
            left: I - B.width
        }
    } else if (A == "west") {
        K = E.right - B.width,
			J = E.y,
			C = E.height;
        G2Mf(H, C);
        mini.setX(H, K);
        H.style.top = D._proxy.style.top;
        I = parseInt(H.style.left);
        F = {
            left: I + B.width
        }
    } else if (A == "north") {
        var K = E.x,
			J = E.bottom - B.height,
			_ = E.width;
        X9c(H, _);
        mini[_20](H, K, J);
        var $ = parseInt(H.style.top);
        F = {
            top: $ + B.height
        }
    } else if (A == "south") {
        K = E.x,
			J = E.y,
			_ = E.width;
        X9c(H, _);
        mini[_20](H, K, J);
        $ = parseInt(H.style.top);
        F = {
            top: $ - B.height
        }
    }
    E$_(D._proxy, "mini-layout-maxZIndex");
    this.W0Y = true;
    var G = this,
		L = jQuery(H);
    L.animate(F, 250, function () {
        ZVS(D._proxy, "mini-layout-maxZIndex");
        G.W0Y = false
    })
},
Oh1_: function (F) {
    if (this.W0Y)
        return;
    F._Expanded = false;
    var B = F.region,
		E = F._el,
		D = L05(E),
		_ = {};
    if (B == "east") {
        var C = parseInt(E.style.left);
        _ = {
            left: C + D.width
        }
    } else if (B == "west") {
        C = parseInt(E.style.left);
        _ = {
            left: C - D.width
        }
    } else if (B == "north") {
        var $ = parseInt(E.style.top);
        _ = {
            top: $ - D.height
        }
    } else if (B == "south") {
        $ = parseInt(E.style.top);
        _ = {
            top: $ + D.height
        }
    }
    E$_(F._proxy, "mini-layout-maxZIndex");
    this.W0Y = true;
    var A = this,
		G = jQuery(E);
    G.animate(_, 250, function () {
        ZVS(F._proxy, "mini-layout-maxZIndex");
        A.W0Y = false;
        A[SA]()
    })
},
M0v: function (B) {
    if (this.W0Y)
        return;
    for (var $ = 0, A = this.regions.length; $ < A; $++) {
        var _ = this.regions[$];
        if (!_._Expanded)
            continue;
        if (Uqe(_._el, B.target) || Uqe(_._proxy, B.target));
        else
            this.Oh1_(_)
    }
},
getAttrs: function (A) {
    var H = Ll[Ov][RH][R05g](this, A),
		G = jQuery(A),
		E = parseInt(G.attr("splitSize"));
    if (!isNaN(E))
        H.splitSize = E;
    var F = [],
		D = mini[SY0](A);
    for (var _ = 0, C = D.length; _ < C; _++) {
        var B = D[_],
			$ = {};
        F.push($);
        $.cls = B.className;
        $.style = B.style.cssText;
        mini[A5ac](B, $, ["region", "title", "iconCls", "iconStyle", "cls", "headerCls", "headerStyle", "bodyCls", "bodyStyle"]);
        mini[QRH](B, $, ["allowResize", "visible", "showCloseButton", "showCollapseButton", "showSplit", "showHeader", "expanded", "showSplitIcon"]);
        mini[ClW](B, $, ["splitSize", "collapseSize", "width", "height", "minWidth", "minHeight", "maxWidth", "maxHeight"]);
        $.bodyParent = B
    }
    H.regions = F;
    return H
}
});
H58(Ll, "layout");
Qv1 = function () {
    Qv1[Ov][FaWb][R05g](this)
};
ZPOi(Qv1, Jva, {
    style: "",
    borderStyle: "",
    bodyStyle: "",
    uiCls: "mini-box",
    _create: function () {
        this.el = document.createElement("div");
        this.el.className = "mini-box";
        this.el.innerHTML = "<div class=\"mini-box-border\"></div>";
        this.Jo4 = this.KDCb = this.el.firstChild
    },
    _initEvents: function () { },
    doLayout: function () {
        if (!this.canLayout())
            return;
        var C = this[Rlg](),
		E = this[U_Ap](),
		B = PvB(this.Jo4),
		D = BRb(this.Jo4);
        if (!C) {
            var A = this[UT](true);
            if (jQuery.boxModel)
                A = A - B.top - B.bottom;
            A = A - D.top - D.bottom;
            if (A < 0)
                A = 0;
            this.Jo4.style.height = A + "px"
        } else
            this.Jo4.style.height = "";
        var $ = this[QRh](true),
		_ = $;
        $ = $ - D.left - D.right;
        if (jQuery.boxModel)
            $ = $ - B.left - B.right;
        if ($ < 0)
            $ = 0;
        this.Jo4.style.width = $ + "px";
        mini.layout(this.KDCb)
    },
    setBody: function (_) {
        if (!_)
            return;
        if (!mini.isArray(_))
            _ = [_];
        for (var $ = 0, A = _.length; $ < A; $++)
            mini.append(this.Jo4, _[$]);
        mini.parse(this.Jo4);
        this[SA]()
    },
    set_bodyParent: function ($) {
        if (!$)
            return;
        var _ = this.Jo4,
		A = $;
        while (A.firstChild)
            _.appendChild(A.firstChild);
        this[SA]()
    },
    setBodyStyle: function ($) {
        DaZ(this.Jo4, $);
        this[SA]()
    },
    getAttrs: function ($) {
        var _ = Qv1[Ov][RH][R05g](this, $);
        _._bodyParent = $;
        mini[A5ac]($, _, ["bodyStyle"]);
        return _
    }
});
H58(Qv1, "box");
NIaw = function () {
    NIaw[Ov][FaWb][R05g](this)
};
ZPOi(NIaw, Jva, {
    url: "",
    uiCls: "mini-include",
    _create: function () {
        this.el = document.createElement("div");
        this.el.className = "mini-include"
    },
    _initEvents: function () { },
    doLayout: function () {
        if (!this.canLayout())
            return;
        var A = this.el.childNodes;
        if (A)
            for (var $ = 0, B = A.length; $ < B; $++) {
                var _ = A[$];
                mini.layout(_)
            }
},
setUrl: function ($) {
    this.url = $;
    mini.update({
        url: this.url,
        el: this.el,
        async: this.async
    });
    this[SA]()
},
getUrl: function ($) {
    return this.url
},
getAttrs: function ($) {
    var _ = NIaw[Ov][RH][R05g](this, $);
    mini[A5ac]($, _, ["url"]);
    return _
}
});
H58(NIaw, "include");
AZW = function () {
    this.FbhW();
    AZW[Ov][FaWb][R05g](this)
};
ZPOi(AZW, Jva, {
    activeIndex: -1,
    tabAlign: "left",
    tabPosition: "top",
    showBody: true,
    nameField: "id",
    titleField: "title",
    urlField: "url",
    url: "",
    maskOnLoad: true,
    bodyStyle: "",
    DI3: "mini-tab-hover",
    L_cf: "mini-tab-active",
    set: function ($) {
        if (typeof $ == "string")
            return this;
        var B = this.XgLp;
        this.XgLp = false;
        var _ = $.activeIndex;
        delete $.activeIndex;
        var A = $.url;
        delete $.url;
        AZW[Ov].set[R05g](this, $);
        if (A)
            this.setUrl(A);
        if (mini.isNumber(_))
            this.setActiveIndex(_);
        this.XgLp = B;
        this[SA]();
        return this
    },
    uiCls: "mini-tabs",
    _create: function () {
        this.el = document.createElement("div");
        this.el.className = "mini-tabs";
        var _ = "<table class=\"mini-tabs-table\" cellspacing=\"0\" cellpadding=\"0\"><tr style=\"width:100%;\">" + "<td></td>" + "<td style=\"text-align:left;vertical-align:top;width:100%;\"><div class=\"mini-tabs-bodys\"></div></td>" + "<td></td>" + "</tr></table>";
        this.el.innerHTML = _;
        this.DOH = this.el.firstChild;
        var $ = this.el.getElementsByTagName("td");
        this.ACUr = $[0];
        this.Uq = $[1];
        this.KDq = $[2];
        this.Jo4 = this.Uq.firstChild;
        this.KDCb = this.Jo4;
        this[YaK]()
    },
    Ujs: function () {
        ZVS(this.ACUr, "mini-tabs-header");
        ZVS(this.KDq, "mini-tabs-header");
        this.ACUr.innerHTML = "";
        this.KDq.innerHTML = "";
        mini.removeChilds(this.Uq, this.Jo4)
    },
    _initEvents: function () {
        VMPY(function () {
            Boy(this.el, "mousedown", this.CgJ, this);
            Boy(this.el, "click", this.Qtm, this);
            Boy(this.el, "mouseover", this.QwgP, this);
            Boy(this.el, "mouseout", this.S0ud, this)
        }, this)
    },
    FbhW: function () {
        this.tabs = []
    },
    U5: 1,
    createTab: function (_) {
        var $ = mini.copyTo({
            _id: this.U5++,
            name: "",
            title: "",
            newLine: false,
            iconCls: "",
            iconStyle: "",
            headerCls: "",
            headerStyle: "",
            bodyCls: "",
            bodyStyle: "",
            visible: true,
            enabled: true,
            showCloseButton: false,
            active: false,
            url: "",
            loaded: false,
            refreshOnClick: false
        }, _);
        if (_) {
            _ = mini.copyTo(_, $);
            $ = _
        }
        return $
    },
    IGi: function () {
        var _ = mini.getData(this.url);
        if (!_)
            _ = [];
        for (var $ = 0, B = _.length; $ < B; $++) {
            var A = _[$];
            A.title = A[this.titleField];
            A.url = A[this.urlField];
            A.name = A[this.nameField]
        }
        this.setTabs(_);
        this.fire("load")
    },
    load: function ($) {
        if (typeof $ == "string")
            this.setUrl($);
        else
            this.setTabs($)
    },
    setUrl: function ($) {
        this.url = $;
        this.IGi()
    },
    getUrl: function () {
        return this.url
    },
    setNameField: function ($) {
        this.nameField = $
    },
    getNameField: function () {
        return this.nameField
    },
    setTitleField: function ($) {
        this[WYB] = $
    },
    getTitleField: function () {
        return this[WYB]
    },
    setUrlField: function ($) {
        this[ZQd] = $
    },
    getUrlField: function () {
        return this[ZQd]
    },
    setTabs: function (_) {
        if (!mini.isArray(_))
            return;
        this.beginUpdate();
        this.removeAll();
        for (var $ = 0, A = _.length; $ < A; $++)
            this.addTab(_[$]);
        this.setActiveIndex(0);
        this.endUpdate()
    },
    getTabs: function () {
        return this.tabs
    },
    removeAll: function (A) {
        var E = this.getActiveTab();
        if (mini.isNull(A))
            A = [];
        if (!mini.isArray(A))
            A = [A];
        for (var $ = A.length - 1; $ >= 0; $--) {
            var B = this.getTab(A[$]);
            if (!B)
                A.removeAt($);
            else
                A[$] = B
        }
        var _ = this.tabs;
        for ($ = _.length - 1; $ >= 0; $--) {
            var D = _[$];
            if (A.indexOf(D) == -1)
                this.removeTab(D)
        }
        var C = A[0];
        if (E != this.getActiveTab())
            if (C)
                this.activeTab(C)
    },
    addTab: function (C, $) {
        if (typeof C == "string")
            C = {
                title: C
            };
        C = this.createTab(C);
        if (!C.name)
            C.name = "";
        if (typeof $ != "number")
            $ = this.tabs.length;
        this.tabs.insert($, C);
        var F = this.Abs(C),
		G = "<div id=\"" + F + "\" class=\"mini-tabs-body " + C.bodyCls + "\" style=\"" + C.bodyStyle + ";display:none;\"></div>";
        mini.append(this.Jo4, G);
        var A = this.getTabBodyEl(C),
		B = C.body;
        delete C.body;
        if (B) {
            if (!mini.isArray(B))
                B = [B];
            for (var _ = 0, E = B.length; _ < E; _++)
                mini.append(A, B[_])
        }
        if (C.bodyParent) {
            var D = C.bodyParent;
            while (D.firstChild)
                A.appendChild(D.firstChild)
        }
        delete C.bodyParent;
        this[YaK]();
        return C
    },
    removeTab: function (C) {
        C = this.getTab(C);
        if (!C)
            return;
        var D = this.getActiveTab(),
		B = C == D,
		A = this.YZO(C);
        this.tabs.remove(C);
        this.ZR84(C);
        var _ = this.getTabBodyEl(C);
        if (_)
            this.Jo4.removeChild(_);
        if (A && B) {
            for (var $ = this.activeIndex; $ >= 0; $--) {
                var C = this.getTab($);
                if (C && C.enabled && C.visible) {
                    this.activeIndex = $;
                    break
                }
            }
            this[YaK]();
            this.setActiveIndex(this.activeIndex);
            this.fire("activechanged")
        } else {
            this.activeIndex = this.tabs.indexOf(D);
            this[YaK]()
        }
        return C
    },
    moveTab: function (A, $) {
        A = this.getTab(A);
        if (!A)
            return;
        var _ = this.tabs[$];
        if (!_ || _ == A)
            return;
        this.tabs.remove(A);
        var $ = this.tabs.indexOf(_);
        this.tabs.insert($, A);
        this[YaK]()
    },
    updateTab: function ($, _) {
        $ = this.getTab($);
        if (!$)
            return;
        mini.copyTo($, _);
        this[YaK]()
    },
    QL: function () {
        return this.Jo4
    },
    ZR84: function (C, A) {
        if (C.EZT0 && C.EZT0.parentNode) {
            C.EZT0.src = "";
            if (C.EZT0._ondestroy)
                C.EZT0._ondestroy();
            try {
                C.EZT0.parentNode.removeChild(C.EZT0);
                C.EZT0[Gwl](true)
            } catch (F) { }

        }
        C.EZT0 = null;
        C.loadedUrl = null;
        if (A === true) {
            var D = this.getTabBodyEl(C);
            if (D) {
                var B = mini[SY0](D, true);
                for (var _ = 0, E = B.length; _ < E; _++) {
                    var $ = B[_];
                    if ($ && $.parentNode)
                        $.parentNode.removeChild($)
                }
            }
        }
    },
    CA: 180,
    _cancelLoadTabs: function (B) {
        var _ = this.tabs;
        for (var $ = 0, C = _.length; $ < C; $++) {
            var A = _[$];
            if (A != B)
                if (A._loading && A.EZT0) {
                    A._loading = false;
                    this.ZR84(A, true)
                }
        }
        this._loading = false;
        this.unmask()
    },
    S_1: function (A) {
        if (!A)
            return;
        var B = this.getTabBodyEl(A);
        if (!B)
            return;
        this._cancelLoadTabs();
        this.ZR84(A, true);
        this._loading = true;
        A._loading = true;
        this.unmask();
        //                if (this.maskOnLoad)
        //                    this.loading();
        var C = new Date(),
		$ = this;
        $.isLoading = true;
        var _ = mini.createIFrame(A.url, function (_, D) {
            try {
                A.EZT0.contentWindow.Owner = window;
                A.EZT0.contentWindow.CloseOwnerWindow = function (_) {
                    A.removeAction = _;
                    var B = true;
                    if (A.ondestroy) {
                        if (typeof A.ondestroy == "string")
                            A.ondestroy = window[A.ondestroy];
                        if (A.ondestroy)
                            B = A.ondestroy[R05g](this, E)
                    }
                    if (B === false)
                        return false;
                    setTimeout(function () {
                        $.removeTab(A)
                    }, 10)
                }
            } catch (E) { }

            if (A._loading != true)
                return;
            var B = (C - new Date()) + $.CA;
            A._loading = false;
            A.loadedUrl = A.url;
            if (B < 0)
                B = 0;
            setTimeout(function () {
                $.unmask();
                $[SA]();
                $.isLoading = false
            }, B);
            if (D) {
                var E = {
                    sender: $,
                    tab: A,
                    index: $.tabs.indexOf(A),
                    name: A.name,
                    iframe: A.EZT0
                };
                if (A.onload) {
                    if (typeof A.onload == "string")
                        A.onload = window[A.onload];
                    if (A.onload)
                        A.onload[R05g]($, E)
                }
            }
            $.fire("tabload", E)
        });
        setTimeout(function () {
            if (A.EZT0 == _)
                B.appendChild(_)
        }, 1);
        A.EZT0 = _
    },
    YZO: function ($) {
        var _ = {
            sender: this,
            tab: $,
            index: this.tabs.indexOf($),
            name: $.name,
            iframe: $.EZT0,
            autoActive: true
        };
        this.fire("tabdestroy", _);
        return _.autoActive
    },
    loadTab: function (A, _, $, C) {
        if (!A)
            return;
        _ = this.getTab(_);
        if (!_)
            _ = this.getActiveTab();
        if (!_)
            return;
        _.url = A;
        delete _.loadedUrl;
        var B = this;
        clearTimeout(this._loadTabTimer);
        this._loadTabTimer = setTimeout(function () {
            B.S_1(_)
        }, 1)
    },
    reloadTab: function ($) {
        $ = this.getTab($);
        if (!$)
            $ = this.getActiveTab();
        if (!$)
            return;
        this.loadTab($.url, $)
    },
    getTabRows: function () {
        var A = [],
		_ = [];
        for (var $ = 0, C = this.tabs.length; $ < C; $++) {
            var B = this.tabs[$];
            if ($ != 0 && B.newLine) {
                A.push(_);
                _ = []
            }
            _.push(B)
        }
        A.push(_);
        return A
    },
    doUpdate: function () {
        if (this.QYky === false)
            return;
        ZVS(this.el, "mini-tabs-position-left");
        ZVS(this.el, "mini-tabs-position-top");
        ZVS(this.el, "mini-tabs-position-right");
        ZVS(this.el, "mini-tabs-position-bottom");
        if (this[ODVe] == "bottom") {
            E$_(this.el, "mini-tabs-position-bottom");
            this.RZv()
        } else if (this[ODVe] == "right") {
            E$_(this.el, "mini-tabs-position-right");
            this.Enk()
        } else if (this[ODVe] == "left") {
            E$_(this.el, "mini-tabs-position-left");
            this.Cq1J()
        } else {
            E$_(this.el, "mini-tabs-position-top");
            this.PUE()
        }
        this[SA]();
        this.setActiveIndex(this.activeIndex, false)
    },
    doLayout: function () {
        if (!this.canLayout())
            return;
        var R = this[Rlg]();
        C = this[UT](true);
        w = this[QRh](true);
        var G = C,
		O = w;
        if (!R && this[XtC]) {
            var Q = jQuery(this.OW).outerHeight(),
			$ = jQuery(this.OW).outerWidth();
            if (this[ODVe] == "top")
                Q = jQuery(this.OW.parentNode).outerHeight();
            if (this[ODVe] == "left" || this[ODVe] == "right")
                w = w - $;
            else
                C = C - Q;
            if (jQuery.boxModel) {
                var D = PvB(this.Jo4),
				S = _t(this.Jo4);
                C = C - D.top - D.bottom - S.top - S.bottom;
                w = w - D.left - D.right - S.left - S.right
            }
            margin = BRb(this.Jo4);
            C = C - margin.top - margin.bottom;
            w = w - margin.left - margin.right;
            if (C < 0)
                C = 0;
            if (w < 0)
                w = 0;
            this.Jo4.style.width = w + "px";
            this.Jo4.style.height = C + "px";
            if (this[ODVe] == "left" || this[ODVe] == "right") {
                var I = this.OW.getElementsByTagName("tr")[0],
				E = I.childNodes,
				_ = E[0].getElementsByTagName("tr"),
				F = last = all = 0;
                for (var K = 0, H = _.length; K < H; K++) {
                    var I = _[K],
					N = jQuery(I).outerHeight();
                    all += N;
                    if (K == 0)
                        F = N;
                    if (K == H - 1)
                        last = N
                }
                switch (this[Kr]) {
                    case "center":
                        var P = parseInt((G - (all - F - last)) / 2);
                        for (K = 0, H = E.length; K < H; K++) {
                            E[K].firstChild.style.height = G + "px";
                            var B = E[K].firstChild,
						_ = B.getElementsByTagName("tr"),
						L = _[0],
						U = _[_.length - 1];
                            L.style.height = P + "px";
                            U.style.height = P + "px"
                        }
                        break;
                    case "right":
                        for (K = 0, H = E.length; K < H; K++) {
                            var B = E[K].firstChild,
						_ = B.getElementsByTagName("tr"),
						I = _[0],
						T = G - (all - F);
                            if (T >= 0)
                                I.style.height = T + "px"
                        }
                        break;
                    case "fit":
                        for (K = 0, H = E.length; K < H; K++)
                            E[K].firstChild.style.height = G + "px";
                        break;
                    default:
                        for (K = 0, H = E.length; K < H; K++) {
                            B = E[K].firstChild,
						_ = B.getElementsByTagName("tr"),
						I = _[_.length - 1],
						T = G - (all - last);
                            if (T >= 0)
                                I.style.height = T + "px"
                        }
                        break
                }
            }
        } else {
            this.Jo4.style.width = "auto";
            this.Jo4.style.height = "auto"
        }
        var A = this.getTabBodyEl(this.activeIndex);
        if (A)
            if (!R && this[XtC]) {
                var C = Cop(this.Jo4, true);
                if (jQuery.boxModel) {
                    D = PvB(A),
					S = _t(A);
                    C = C - D.top - D.bottom - S.top - S.bottom
                }
                A.style.height = C + "px"
            } else
                A.style.height = "auto";
        switch (this[ODVe]) {
            case "bottom":
                var M = this.OW.childNodes;
                for (K = 0, H = M.length; K < H; K++) {
                    B = M[K];
                    ZVS(B, "mini-tabs-header2");
                    if (H > 1 && K != 0)
                        E$_(B, "mini-tabs-header2")
                }
                break;
            case "left":
                E = this.OW.firstChild.rows[0].cells;
                for (K = 0, H = E.length; K < H; K++) {
                    var J = E[K];
                    ZVS(J, "mini-tabs-header2");
                    if (H > 1 && K == 0)
                        E$_(J, "mini-tabs-header2")
                }
                break;
            case "right":
                E = this.OW.firstChild.rows[0].cells;
                for (K = 0, H = E.length; K < H; K++) {
                    J = E[K];
                    ZVS(J, "mini-tabs-header2");
                    if (H > 1 && K != 0)
                        E$_(J, "mini-tabs-header2")
                }
                break;
            default:
                M = this.OW.childNodes;
                for (K = 0, H = M.length; K < H; K++) {
                    B = M[K];
                    ZVS(B, "mini-tabs-header2");
                    if (H > 1 && K == 0)
                        E$_(B, "mini-tabs-header2")
                }
                break
        }
        ZVS(this.el, "mini-tabs-scroll");
        if (this[ODVe] == "top") {
            jQuery(this.OW).width(O);
            if (this.OW.offsetWidth < this.OW.scrollWidth) {
                jQuery(this.OW).width(O - 60);
                E$_(this.el, "mini-tabs-scroll")
            }
            if (isIE && !jQuery.boxModel)
                this.On.style.left = "-26px"
        }
        this.EWM();
        mini.layout(this.Jo4)
    },
    setTabAlign: function ($) {
        this[Kr] = $;
        this[YaK]()
    },
    setTabPosition: function ($) {
        this[ODVe] = $;
        this[YaK]()
    },
    getTab: function ($) {
        if (typeof $ == "object")
            return $;
        if (typeof $ == "number")
            return this.tabs[$];
        else
            for (var _ = 0, B = this.tabs.length; _ < B; _++) {
                var A = this.tabs[_];
                if (A.name == $)
                    return A
            }
    },
    getHeaderEl: function () {
        return this.OW
    },
    getBodyEl: function () {
        return this.Jo4
    },
    getTabEl: function ($) {
        var C = this.getTab($);
        if (!C)
            return null;
        var E = this.XMq(C),
		B = this.el.getElementsByTagName("*");
        for (var _ = 0, D = B.length; _ < D; _++) {
            var A = B[_];
            if (A.id == E)
                return A
        }
        return null
    },
    getTabBodyEl: function ($) {
        var C = this.getTab($);
        if (!C)
            return null;
        var E = this.Abs(C),
		B = this.Jo4.childNodes;
        for (var _ = 0, D = B.length; _ < D; _++) {
            var A = B[_];
            if (A.id == E)
                return A
        }
        return null
    },
    getTabIFrameEl: function ($) {
        var _ = this.getTab($);
        if (!_)
            return null;
        return _.EZT0
    },
    XMq: function ($) {
        return this.uid + "$" + $._id
    },
    Abs: function ($) {
        return this.uid + "$body$" + $._id
    },
    EWM: function () {
        if (this[ODVe] == "top") {
            ZVS(this.On, "mini-disabled");
            ZVS(this.ANv, "mini-disabled");
            if (this.OW.scrollLeft == 0)
                E$_(this.On, "mini-disabled");
            var _ = this.getTabEl(this.tabs.length - 1);
            if (_) {
                var $ = L05(_),
				A = L05(this.OW);
                if ($.right <= A.right)
                    E$_(this.ANv, "mini-disabled")
            }
        }
    },
    setActiveIndex: function ($, I) {
        var M = this.getTab($),
		C = this.getTab(this.activeIndex),
		N = M != C,
		K = this.getTabBodyEl(this.activeIndex);
        if (K)
            K.style.display = "none";
        if (M)
            this.activeIndex = this.tabs.indexOf(M);
        else
            this.activeIndex = -1;
        K = this.getTabBodyEl(this.activeIndex);
        if (K)
            K.style.display = "";
        K = this.getTabEl(C);
        if (K)
            ZVS(K, this.L_cf);
        K = this.getTabEl(M);
        if (K)
            E$_(K, this.L_cf);
        if (K && N) {
            if (this[ODVe] == "bottom") {
                var A = $Rz(K, "mini-tabs-header");
                if (A)
                    jQuery(this.OW).prepend(A)
            } else if (this[ODVe] == "left") {
                var G = $Rz(K, "mini-tabs-header").parentNode;
                if (G)
                    G.parentNode.appendChild(G)
            } else if (this[ODVe] == "right") {
                G = $Rz(K, "mini-tabs-header").parentNode;
                if (G)
                    jQuery(G.parentNode).prepend(G)
            } else {
                A = $Rz(K, "mini-tabs-header");
                if (A)
                    this.OW.appendChild(A)
            }
            var B = this.OW.scrollLeft;
            this[SA]();
            var _ = this.getTabRows();
            if (_.length > 1);
            else {
                if (this[ODVe] == "top") {
                    this.OW.scrollLeft = B;
                    var O = this.getTabEl(this.activeIndex);
                    if (O) {
                        var J = this,
						L = L05(O),
						F = L05(J.OW);
                        if (L.x < F.x)
                            J.OW.scrollLeft -= (F.x - L.x);
                        else if (L.right > F.right)
                            J.OW.scrollLeft += (L.right - F.right)
                    }
                }
                this.EWM()
            }
            for (var H = 0, E = this.tabs.length; H < E; H++) {
                O = this.getTabEl(this.tabs[H]);
                if (O)
                    ZVS(O, this.DI3)
            }
        }
        var D = this;
        if (N) {
            var P = {
                tab: M,
                index: this.tabs.indexOf(M),
                name: M.name
            };
            setTimeout(function () {
                D.fire("ActiveChanged", P)
            }, 1)
        }
        this._cancelLoadTabs(M);
        if (I !== false)
            if (M && M.url && !M.loadedUrl) {
                D = this;
                D.loadTab(M.url, M)
            }
        if (D.canLayout()) {
            try {
                mini.layoutIFrames(D.el)
            } catch (P) { }

        }
    },
    getActiveIndex: function () {
        return this.activeIndex
    },
    activeTab: function ($) {
        this.setActiveIndex($)
    },
    getActiveTab: function () {
        return this.getTab(this.activeIndex)
    },
    getActiveIndex: function () {
        return this.activeIndex
    },
    _8o: function (_) {
        _ = this.getTab(_);
        if (!_)
            return;
        var $ = this.tabs.indexOf(_);
        if (this.activeIndex == $)
            return;
        var A = {
            tab: _,
            index: $,
            name: _.name,
            cancel: false
        };
        this.fire("BeforeActiveChanged", A);
        if (A.cancel == false)
            this.activeTab(_)
    },
    setShowBody: function ($) {
        if (this[XtC] != $) {
            this[XtC] = $;
            this[SA]()
        }
    },
    getShowBody: function () {
        return this[XtC]
    },
    setBodyStyle: function ($) {
        this.bodyStyle = $;
        DaZ(this.Jo4, $);
        this[SA]()
    },
    getBodyStyle: function () {
        return this.bodyStyle
    },
    setMaskOnLoad: function ($) {
        this.maskOnLoad = $
    },
    getMaskOnLoad: function () {
        return this.maskOnLoad
    },
    getTabByEvent: function ($) {
        return this.EAW($)
    },
    EAW: function (B) {
        var A = $Rz(B.target, "mini-tab");
        if (!A)
            return null;
        var _ = A.id.split("$");
        if (_[0] != this.uid)
            return null;
        var $ = parseInt(jQuery(A).attr("index"));
        return this.getTab($)
    },
    Qtm: function (A) {
        if (this.isLoading)
            return;
        var $ = this.EAW(A);
        if (!$)
            return;
        if ($.enabled) {
            var _ = this;
            setTimeout(function () {
                if ($Rz(A.target, "mini-tab-close"))
                    _.N0T($, A);
                else {
                    var B = $.loadedUrl;
                    _._8o($);
                    if ($[DAb] && $.url == B)
                        _.reloadTab($)
                }
            }, 10)
        }
    },
    hoverTab: null,
    QwgP: function (A) {
        var $ = this.EAW(A);
        if ($ && $.enabled) {
            var _ = this.getTabEl($);
            E$_(_, this.DI3);
            this.hoverTab = $
        }
    },
    S0ud: function (_) {
        if (this.hoverTab) {
            var $ = this.getTabEl(this.hoverTab);
            ZVS($, this.DI3)
        }
        this.hoverTab = null
    },
    CgJ: function (B) {
        clearInterval(this._e1);
        if (this[ODVe] == "top") {
            var _ = this,
			A = 0,
			$ = 10;
            if (B.target == this.On)
                this._e1 = setInterval(function () {
                    _.OW.scrollLeft -= $;
                    A++;
                    if (A > 5)
                        $ = 18;
                    if (A > 10)
                        $ = 25;
                    _.EWM()
                }, 25);
            else if (B.target == this.ANv)
                this._e1 = setInterval(function () {
                    _.OW.scrollLeft += $;
                    A++;
                    if (A > 5)
                        $ = 18;
                    if (A > 10)
                        $ = 25;
                    _.EWM()
                }, 25);
            Boy(document, "mouseup", this.JbQ, this)
        }
    },
    JbQ: function ($) {
        clearInterval(this._e1);
        this._e1 = null;
        Ej(document, "mouseup", this.JbQ, this)
    },
    PUE: function () {
        var L = this[ODVe] == "top",
		O = "";
        if (L) {
            O += "<div class=\"mini-tabs-scrollCt\">";
            O += "<a class=\"mini-tabs-leftButton\" href=\"javascript:void(0)\" hideFocus onclick=\"return false\"></a><a class=\"mini-tabs-rightButton\" href=\"javascript:void(0)\" hideFocus onclick=\"return false\"></a>"
        }
        O += "<div class=\"mini-tabs-headers\">";
        var B = this.getTabRows();
        for (var M = 0, A = B.length; M < A; M++) {
            var I = B[M],
			E = "";
            O += "<table class=\"mini-tabs-header\" cellspacing=\"0\" cellpadding=\"0\"><tr><td class=\"mini-tabs-space mini-tabs-firstSpace\"><div></div></td>";
            for (var J = 0, F = I.length; J < F; J++) {
                var N = I[J],
				G = this.XMq(N);
                if (!N.visible)
                    continue;
                var $ = this.tabs.indexOf(N),
				E = N.headerCls || "";
                if (N.enabled == false)
                    E += " mini-disabled";
                O += "<td id=\"" + G + "\" index=\"" + $ + "\"  class=\"mini-tab " + E + "\" style=\"" + N.headerStyle + "\">";
                if (N.iconCls || N[Jhs])
                    O += "<span class=\"mini-tab-icon " + N.iconCls + "\" style=\"" + N[Jhs] + "\"></span>";
                O += "<span class=\"mini-tab-text\">" + N.title + "</span>";
                if (N[NVR1]) {
                    var _ = "";
                    if (N.enabled)
                        _ = "onmouseover=\"E$_(this,'mini-tab-close-hover')\" onmouseout=\"ZVS(this,'mini-tab-close-hover')\"";
                    O += "<span class=\"mini-tab-close\" " + _ + "></span>"
                }
                O += "</td>";
                if (J != F - 1)
                    O += "<td class=\"mini-tabs-space2\"><div></div></td>"
            }
            O += "<td class=\"mini-tabs-space mini-tabs-lastSpace\" ><div></div></td></tr></table>"
        }
        if (L)
            O += "</div>";
        O += "</div>";
        this.Ujs();
        mini.prepend(this.Uq, O);
        var H = this.Uq;
        this.OW = H.firstChild.lastChild;
        if (L) {
            this.On = this.OW.parentNode.firstChild;
            this.ANv = this.OW.parentNode.childNodes[1]
        }
        switch (this[Kr]) {
            case "center":
                var K = this.OW.childNodes;
                for (J = 0, F = K.length; J < F; J++) {
                    var C = K[J],
				D = C.getElementsByTagName("td");
                    D[0].style.width = "50%";
                    D[D.length - 1].style.width = "50%"
                }
                break;
            case "right":
                K = this.OW.childNodes;
                for (J = 0, F = K.length; J < F; J++) {
                    C = K[J],
				D = C.getElementsByTagName("td");
                    D[0].style.width = "100%"
                }
                break;
            case "fit":
                break;
            default:
                K = this.OW.childNodes;
                for (J = 0, F = K.length; J < F; J++) {
                    C = K[J],
				D = C.getElementsByTagName("td");
                    D[D.length - 1].style.width = "100%"
                }
                break
        }
    },
    RZv: function () {
        this.PUE();
        var $ = this.Uq;
        mini.append($, $.firstChild);
        this.OW = $.lastChild
    },
    Cq1J: function () {
        var J = "<table cellspacing=\"0\" cellpadding=\"0\"><tr>",
		B = this.getTabRows();
        for (var H = 0, A = B.length; H < A; H++) {
            var F = B[H],
			C = "";
            if (A > 1 && H != A - 1)
                C = "mini-tabs-header2";
            J += "<td class=\"" + C + "\"><table class=\"mini-tabs-header\" cellspacing=\"0\" cellpadding=\"0\">";
            J += "<tr ><td class=\"mini-tabs-space mini-tabs-firstSpace\" ><div></div></td></tr>";
            for (var G = 0, D = F.length; G < D; G++) {
                var I = F[G],
				E = this.XMq(I);
                if (!I.visible)
                    continue;
                var $ = this.tabs.indexOf(I),
				C = I.headerCls || "";
                if (I.enabled == false)
                    C += " mini-disabled";
                J += "<tr><td id=\"" + E + "\" index=\"" + $ + "\"  class=\"mini-tab " + C + "\" style=\"" + I.headerStyle + "\">";
                if (I.iconCls || I[Jhs])
                    J += "<span class=\"mini-tab-icon " + I.iconCls + "\" style=\"" + I[Jhs] + "\"></span>";
                J += "<span class=\"mini-tab-text\">" + I.title + "</span>";
                if (I[NVR1]) {
                    var _ = "";
                    if (I.enabled)
                        _ = "onmouseover=\"E$_(this,'mini-tab-close-hover')\" onmouseout=\"ZVS(this,'mini-tab-close-hover')\"";
                    J += "<span class=\"mini-tab-close\" " + _ + "></span>"
                }
                J += "</td></tr>";
                if (G != D - 1)
                    J += "<tr><td class=\"mini-tabs-space2\"><div></div></td></tr>"
            }
            J += "<tr ><td class=\"mini-tabs-space mini-tabs-lastSpace\" ><div></div></td></tr>";
            J += "</table></td>"
        }
        J += "</tr ></table>";
        this.Ujs();
        E$_(this.ACUr, "mini-tabs-header");
        mini.append(this.ACUr, J);
        this.OW = this.ACUr
    },
    Enk: function () {
        this.Cq1J();
        ZVS(this.ACUr, "mini-tabs-header");
        ZVS(this.KDq, "mini-tabs-header");
        mini.append(this.KDq, this.ACUr.firstChild);
        this.OW = this.KDq
    },
    N0T: function (_, $) {
        var C = {
            tab: _,
            index: this.tabs.indexOf(_),
            name: _.name.toLowerCase(),
            htmlEvent: $,
            cancel: false
        };
        this.fire("beforecloseclick", C);
        try {
            if (_.EZT0 && _.EZT0.contentWindow) {
                var A = true;
                if (_.EZT0.contentWindow.CloseWindow)
                    A = _.EZT0.contentWindow.CloseWindow("close");
                else if (_.EZT0.contentWindow.CloseOwnerWindow)
                    A = _.EZT0.contentWindow.CloseOwnerWindow("close");
                if (A === false)
                    C.cancel = true
            }
        } catch (B) { }

        if (C.cancel == true)
            return;
        _.removeAction = "close";
        this.removeTab(_);
        this.fire("closeclick", C)
    },
    onBeforeCloseClick: function (_, $) {
        this.on("beforecloseclick", _, $)
    },
    onCloseClick: function (_, $) {
        this.on("closeclick", _, $)
    },
    onActiveChanged: function (_, $) {
        this.on("activechanged", _, $)
    },
    getAttrs: function (B) {
        var F = AZW[Ov][RH][R05g](this, B);
        mini[A5ac](B, F, ["tabAlign", "tabPosition", "bodyStyle", "onactivechanged", "onbeforeactivechanged", "url", "ontabload", "ontabdestroy", "onbeforecloseclick", "oncloseclick", "titleField", "urlField", "nameField", "loadingMsg"]);
        mini[QRH](B, F, ["allowAnim", "showBody", "maskOnLoad"]);
        mini[ClW](B, F, ["activeIndex"]);
        var A = [],
		E = mini[SY0](B);
        for (var _ = 0, D = E.length; _ < D; _++) {
            var C = E[_],
			$ = {};
            A.push($);
            $.style = C.style.cssText;
            mini[A5ac](C, $, ["name", "title", "url", "cls", "iconCls", "iconStyle", "headerCls", "headerStyle", "bodyCls", "bodyStyle", "onload", "ondestroy"]);
            mini[QRH](C, $, ["newLine", "visible", "enabled", "showCloseButton", "refreshOnClick"]);
            $.bodyParent = C
        }
        F.tabs = A;
        return F
    }
});
H58(AZW, "tabs");
Y6XM = function () {
    this.items = [];
    Y6XM[Ov][FaWb][R05g](this)
};
ZPOi(Y6XM, Jva);
mini.copyTo(Y6XM.prototype, QHb_prototype);
var QHb_prototype_hide = QHb_prototype.hide;
mini.copyTo(Y6XM.prototype, {
    width: 140,
    vertical: true,
    allowSelectItem: false,
    OT84: null,
    _D2: "mini-menuitem-selected",
    textField: "text",
    resultAsTree: false,
    idField: "id",
    parentField: "pid",
    itemsField: "children",
    _clearBorder: false,
    showAction: "none",
    hideAction: "outerclick",
    getbyName: function (C) {
        for (var _ = 0, B = this.items.length; _ < B; _++) {
            var $ = this.items[_];
            if ($.name == C)
                return $;
            if ($.menu) {
                var A = $.menu.getbyName(C);
                if (A)
                    return A
            }
        }
        return null
    },
    set: function ($) {
        if (typeof $ == "string")
            return this;
        var _ = $.url;
        delete $.url;
        Y6XM[Ov].set[R05g](this, $);
        if (_)
            this.setUrl(_);
        return this
    },
    uiCls: "mini-menu",
    _create: function () {
        var _ = "<table class=\"mini-menu\" cellpadding=\"0\" cellspacing=\"0\"><tr><td style=\"text-align:left;vertical-align:top;padding:0;border:0;\"><div class=\"mini-menu-inner\"></div></td></tr></table>",
		$ = document.createElement("div");
        $.innerHTML = _;
        this.el = $.firstChild;
        this._contentEl = mini.byClass("mini-menu-inner", this.el);
        if (this.isVertical() == false)
            E$_(this.el, "mini-menu-horizontal")
    },
    destroy: function ($) {
        this._popupEl = this.popupEl = null;
        this.owner = null;
        Ej(document, "mousedown", this.BG, this);
        Ej(window, "resize", this.K6Wd, this);
        Y6XM[Ov][Yr3P][R05g](this, $)
    },
    _initEvents: function () {
        VMPY(function () {
            Boy(document, "mousedown", this.BG, this);
            Boy(this.el, "mouseover", this.QwgP, this);
            Boy(window, "resize", this.K6Wd, this);
            Boy(this.el, "contextmenu", function ($) {
                $.preventDefault()
            }, this)
        }, this)
    },
    within: function (B) {
        if (Uqe(this.el, B.target))
            return true;
        for (var _ = 0, A = this.items.length; _ < A; _++) {
            var $ = this.items[_];
            if ($[BmC](B))
                return true
        }
        return false
    },
    LL: function () {
        if (!this._clearEl)
            this._clearEl = mini.append(this._contentEl, "<div style=\"clear:both;\"></div>");
        return this._clearEl
    },
    setVertical: function ($) {
        this.vertical = $;
        if (!$)
            E$_(this.el, "mini-menu-horizontal");
        else
            ZVS(this.el, "mini-menu-horizontal");
        mini.append(this._contentEl, this.LL())
    },
    getVertical: function () {
        return this.vertical
    },
    isVertical: function () {
        return this.vertical
    },
    show: function () {
        this[IJjY](true)
    },
    hide: function () {
        this.hideItems();
        QHb_prototype_hide[R05g](this)
    },
    hideItems: function () {
        for (var $ = 0, A = this.items.length; $ < A; $++) {
            var _ = this.items[$];
            _.hideMenu()
        }
    },
    showItemMenu: function ($) {
        for (var _ = 0, B = this.items.length; _ < B; _++) {
            var A = this.items[_];
            if (A == $)
                A.showMenu();
            else
                A.hideMenu()
        }
    },
    hasShowItemMenu: function () {
        for (var $ = 0, A = this.items.length; $ < A; $++) {
            var _ = this.items[$];
            if (_ && _.menu && _.menu.isPopup)
                return true
        }
        return false
    },
    setItems: function (_) {
        if (!mini.isArray(_))
            return;
        this.removeAll();
        for (var $ = 0, A = _.length; $ < A; $++)
            this.addItem(_[$])
    },
    getItems: function () {
        return this.items
    },
    addItem: function ($) {
        if ($ == "-" || $ == "|") {
            mini.append(this._contentEl, "<span class=\"mini-separator\"></span>");
            return
        }
        if (!mini.isControl($) && !mini.getClass($.type))
            $.type = "menuitem";
        $ = mini.getAndCreate($);
        this.items.push($);
        this._contentEl.appendChild($.el);
        $.ownerMenu = this;
        mini.append(this._contentEl, this.LL());
        this.fire("itemschanged")
    },
    removeItem: function ($) {
        $ = mini.get($);
        if (!$)
            return;
        this.items.remove($);
        this._contentEl.removeChild($.el);
        this.fire("itemschanged")
    },
    removeItemAt: function (_) {
        var $ = this.items[_];
        this.removeItem($)
    },
    removeAll: function () {
        var _ = this.items.clone();
        for (var $ = _.length - 1; $ >= 0; $--)
            this.removeItem(_[$]);
        this._contentEl.innerHTML = ""
    },
    getGroupItems: function (C) {
        if (!C)
            return [];
        var A = [];
        for (var _ = 0, B = this.items.length; _ < B; _++) {
            var $ = this.items[_];
            if ($[VPhi] == C)
                A.push($)
        }
        return A
    },
    getItem: function ($) {
        if (typeof $ == "number")
            return this.items[$];
        return $
    },
    setAllowSelectItem: function ($) {
        this.allowSelectItem = $
    },
    getAllowSelectItem: function () {
        return this.allowSelectItem
    },
    setSelectedItem: function ($) {
        $ = this[WtRy]($);
        this._OnItemSelect($)
    },
    getSelectedItem: function ($) {
        return this.OT84
    },
    setTextField: function ($) {
        this[T2m] = $
    },
    getTextField: function () {
        return this[T2m]
    },
    setResultAsTree: function ($) {
        this[WFK] = $
    },
    getResultAsTree: function () {
        return this[WFK]
    },
    setIdField: function ($) {
        this[XsI] = $
    },
    getIdField: function () {
        return this[XsI]
    },
    setParentField: function ($) {
        this[_v3e] = $
    },
    getParentField: function () {
        return this[_v3e]
    },
    url: "",
    IGi: function () {
        var B = mini.getData(this.url);
        if (!B)
            B = [];
        if (this[WFK] == false)
            B = mini.arrayToTree(B, this.itemsField, this.idField, this[_v3e]);
        var _ = mini[Q$](B, this.itemsField, this.idField, this[_v3e]);
        for (var A = 0, C = _.length; A < C; A++) {
            var $ = _[A];
            $.text = $[this.textField]
        }
        this.setItems(B);
        this.fire("load")
    },
    load: function ($) {
        if (typeof $ == "string")
            this.setUrl($);
        else
            this.setItems($)
    },
    setUrl: function ($) {
        this.url = $;
        this.IGi()
    },
    getUrl: function () {
        return this.url
    },
    _OnItemClick: function ($, _) {
        var A = {
            item: $,
            isLeaf: !$.menu,
            htmlEvent: _
        };
        if (this.isPopup)
            this.hide();
        else
            this.hideItems();
        if (this.allowSelectItem)
            this.setSelectedItem($);
        this.fire("itemclick", A);
        if (this.ownerItem);
    },
    _OnItemSelect: function ($) {
        if (this.OT84)
            this.OT84[X9GT](this._D2);
        this.OT84 = $;
        if (this.OT84)
            this.OT84[UAC](this._D2);
        var _ = {
            item: this.OT84
        };
        this.fire("itemselect", _)
    },
    onItemClick: function (_, $) {
        this.on("itemclick", _, $)
    },
    onItemSelect: function (_, $) {
        this.on("itemselect", _, $)
    },
    parseItems: function (G) {
        var C = [];
        for (var _ = 0, F = G.length; _ < F; _++) {
            var B = G[_];
            if (B.className == "separator") {
                C.add("-");
                continue
            }
            var E = mini[SY0](B),
			A = E[0],
			D = E[1],
			$ = new Qkw();
            if (!D) {
                mini.applyTo[R05g]($, B);
                C.add($);
                continue
            }
            mini.applyTo[R05g]($, A);
            $[Tlr9](document.body);
            var H = new Y6XM();
            mini.applyTo[R05g](H, D);
            $.setMenu(H);
            H[Tlr9](document.body);
            C.add($)
        }
        return C.clone()
    },
    getAttrs: function (_) {
        var E = Y6XM[Ov][RH][R05g](this, _),
		D = jQuery(_);
        mini[A5ac](_, E, ["popupEl", "popupCls", "showAction", "hideAction", "hAlign", "vAlign", "modalStyle", "onbeforeopen", "open", "onbeforeclose", "onclose", "url", "onitemclick", "onitemselect", "textField", "idField", "parentField"]);
        mini[QRH](_, E, ["resultAsTree"]);
        var A = mini[SY0](_),
		$ = this.parseItems(A);
        if ($.length > 0)
            E.items = $;
        var B = D.attr("vertical");
        if (B)
            E.vertical = B == "true" ? true : false;
        var C = D.attr("allowSelectItem");
        if (C)
            E.allowSelectItem = C == "true" ? true : false;
        return E
    }
});
H58(Y6XM, "menu");
Y6XMBar = function () {
    Y6XMBar[Ov][FaWb][R05g](this)
};
ZPOi(Y6XMBar, Y6XM, {
    uiCls: "mini-menubar",
    vertical: false,
    setVertical: function ($) {
        this.vertical = false
    }
});
H58(Y6XMBar, "menubar");
mini.ContextMenu = function () {
    mini.ContextMenu[Ov][FaWb][R05g](this)
};
ZPOi(mini.ContextMenu, Y6XM, {
    uiCls: "mini-contextmenu",
    vertical: true,
    visible: false,
    setVertical: function ($) {
        this.vertical = true
    }
});
H58(mini.ContextMenu, "contextmenu");
Qkw = function () {
    Qkw[Ov][FaWb][R05g](this)
};
ZPOi(Qkw, Jva, {
    text: "",
    iconCls: "",
    iconStyle: "",
    iconPosition: "left",
    showIcon: true,
    showAllow: true,
    checked: false,
    checkOnClick: false,
    groupName: "",
    _hoverCls: "mini-menuitem-hover",
    KXR: "mini-menuitem-pressed",
    CeH: "mini-menuitem-checked",
    _clearBorder: false,
    menu: null,
    uiCls: "mini-menuitem",
    _create: function () {
        var $ = this.el = document.createElement("div");
        this.el.className = "mini-menuitem";
        this.el.innerHTML = "<div class=\"mini-menuitem-inner\"><div class=\"mini-menuitem-icon\"></div><div class=\"mini-menuitem-text\"></div><div class=\"mini-menuitem-allow\"></div></div>";
        this.WI6 = this.el.firstChild;
        this._u_m = this.WI6.firstChild;
        this.$g = this.WI6.childNodes[1];
        this.allowEl = this.WI6.lastChild
    },
    _initEvents: function () {
        Boy(this.el, "click", this.Qtm, this);
        Boy(this.el, "mouseup", this.JE, this);
        Boy(this.el, "mouseover", this.QwgP, this);
        Boy(this.el, "mouseout", this.S0ud, this)
    },
    destroy: function ($) {
        this.menu = null;
        Qkw[Ov][Yr3P][R05g](this, $)
    },
    within: function ($) {
        if (Uqe(this.el, $.target))
            return true;
        if (this.menu && this.menu[BmC]($))
            return true;
        return false
    },
    doUpdate: function () {
        if (this.$g)
            this.$g.innerHTML = this.text;
        if (this._u_m) {
            DaZ(this._u_m, this[Jhs]);
            E$_(this._u_m, this.iconCls);
            this._u_m.style.display = (this[Jhs] || this.iconCls) ? "block" : "none"
        }
        if (this.iconPosition == "top")
            E$_(this.el, "mini-menuitem-icontop");
        else
            ZVS(this.el, "mini-menuitem-icontop");
        if (this.checked)
            E$_(this.el, this.CeH);
        else
            ZVS(this.el, this.CeH);
        if (this.allowEl)
            if (this.menu && this.menu.items.length > 0)
                this.allowEl.style.display = "block";
            else
                this.allowEl.style.display = "none"
        },
        setText: function ($) {
            this.text = $;
            this[YaK]()
        },
        getText: function () {
            return this.text
        },
        setIconCls: function ($) {
            ZVS(this._u_m, this.iconCls);
            this.iconCls = $;
            this[YaK]()
        },
        getIconCls: function () {
            return this.iconCls
        },
        setIconStyle: function ($) {
            this[Jhs] = $;
            this[YaK]()
        },
        getIconStyle: function () {
            return this[Jhs]
        },
        setIconPosition: function ($) {
            this.iconPosition = $;
            this[YaK]()
        },
        getIconPosition: function () {
            return this.iconPosition
        },
        setCheckOnClick: function ($) {
            this[IOKa] = $;
            if ($)
                E$_(this.el, "mini-menuitem-showcheck");
            else
                ZVS(this.el, "mini-menuitem-showcheck")
        },
        getCheckOnClick: function () {
            return this[IOKa]
        },
        setChecked: function ($) {
            if (this.checked != $) {
                this.checked = $;
                this[YaK]();
                this.fire("checkedchanged")
            }
        },
        getChecked: function () {
            return this.checked
        },
        setGroupName: function ($) {
            if (this[VPhi] != $)
                this[VPhi] = $
        },
        getGroupName: function () {
            return this[VPhi]
        },
        setChildren: function ($) {
            this.setMenu($)
        },
        setMenu: function ($) {
            if (mini.isArray($))
                $ = {
                    type: "menu",
                    items: $
                };
            if (this.menu !== $) {
                this.menu = mini.getAndCreate($);
                this.menu.hide();
                this.menu.ownerItem = this;
                this[YaK]();
                this.menu.on("itemschanged", this.CImo, this)
            }
        },
        getMenu: function () {
            return this.menu
        },
        showMenu: function () {
            if (this.menu) {
                this.menu.setHideAction("outerclick");
                var $ = {
                    hAlign: "outright",
                    vAlign: "top",
                    outHAlign: "outleft",
                    popupCls: "mini-menu-popup"
                };
                if (this.ownerMenu && this.ownerMenu.vertical == false) {
                    $.hAlign = "left";
                    $.vAlign = "below";
                    $.outHAlign = null
                }
                this.menu.showAtEl(this.el, $)
            }
        },
        hideMenu: function () {
            if (this.menu)
                this.menu.hide()
        },
        hide: function () {
            this.hideMenu();
            this[IJjY](false)
        },
        CImo: function ($) {
            this[YaK]()
        },
        getTopMenu: function () {
            if (this.ownerMenu)
                if (this.ownerMenu.ownerItem)
                    return this.ownerMenu.ownerItem.getTopMenu();
                else
                    return this.ownerMenu;
        return null
    },
    Qtm: function (D) {
        if (this[DcOq]())
            return;
        if (this[IOKa])
            if (this.ownerMenu && this[VPhi]) {
                var B = this.ownerMenu.getGroupItems(this[VPhi]);
                if (B.length > 0) {
                    if (this.checked == false) {
                        for (var _ = 0, C = B.length; _ < C; _++) {
                            var $ = B[_];
                            if ($ != this)
                                $.setChecked(false)
                        }
                        this.setChecked(true)
                    }
                } else
                    this.setChecked(!this.checked)
            } else
                this.setChecked(!this.checked);
    this.fire("click");
    var A = this.getTopMenu();
    if (A)
        A._OnItemClick(this, D)
},
JE: function (_) {
    if (this[DcOq]())
        return;
    if (this.ownerMenu) {
        var $ = this;
        setTimeout(function () {
            if ($[RPC]())
                $.ownerMenu.showItemMenu($)
        }, 1)
    }
},
QwgP: function ($) {
    if (this[DcOq]())
        return;
    E$_(this.el, this._hoverCls);
    if (this.ownerMenu)
        if (this.ownerMenu.isVertical() == true)
            this.ownerMenu.showItemMenu(this);
        else if (this.ownerMenu.hasShowItemMenu())
            this.ownerMenu.showItemMenu(this)
},
S0ud: function ($) {
    ZVS(this.el, this._hoverCls)
},
onClick: function (_, $) {
    this.on("click", _, $)
},
onCheckedChanged: function (_, $) {
    this.on("checkedchanged", _, $)
},
getAttrs: function ($) {
    var A = Qkw[Ov][RH][R05g](this, $),
		_ = jQuery($);
    A.text = $.innerHTML;
    mini[A5ac]($, A, ["text", "iconCls", "iconStyle", "iconPosition", "groupName", "onclick", "oncheckedchanged"]);
    mini[QRH]($, A, ["checkOnClick", "checked"]);
    return A
}
});
H58(Qkw, "menuitem");
MD = function () {
    this.BDVS();
    MD[Ov][FaWb][R05g](this)
};
ZPOi(MD, Jva, {
    width: 180,
    activeIndex: -1,
    autoCollapse: false,
    groupCls: "",
    groupStyle: "",
    groupHeaderCls: "",
    groupHeaderStyle: "",
    groupBodyCls: "",
    groupBodyStyle: "",
    groupHoverCls: "",
    groupActiveCls: "",
    allowAnim: true,
    set: function (_) {
        if (typeof _ == "string")
            return this;
        var A = this.XgLp;
        this.XgLp = false;
        var $ = _.activeIndex;
        delete _.activeIndex;
        MD[Ov].set[R05g](this, _);
        if (mini.isNumber($))
            this.setActiveIndex($);
        this.XgLp = A;
        this[SA]();
        return this
    },
    uiCls: "mini-outlookbar",
    _create: function () {
        this.el = document.createElement("div");
        this.el.className = "mini-outlookbar";
        this.el.innerHTML = "<div class=\"mini-outlookbar-border\"></div>";
        this.KDCb = this.el.firstChild
    },
    _initEvents: function () {
        VMPY(function () {
            Boy(this.el, "click", this.Qtm, this)
        }, this)
    },
    PG2: function ($) {
        return this.uid + "$" + $._id
    },
    _GroupId: 1,
    BDVS: function () {
        this.groups = []
    },
    Gnh: function (_) {
        var H = this.PG2(_),
		G = "<div id=\"" + H + "\" class=\"mini-outlookbar-group " + _.cls + "\" style=\"" + _.style + "\">" + "<div class=\"mini-outlookbar-groupHeader " + _.headerCls + "\" style=\"" + _.headerStyle + ";\"></div>" + "<div class=\"mini-outlookbar-groupBody " + _.bodyCls + "\" style=\"" + _.bodyStyle + ";\"></div>" + "</div>",
		A = mini.append(this.KDCb, G),
		E = A.lastChild,
		C = _.body;
        delete _.body;
        if (C) {
            if (!mini.isArray(C))
                C = [C];
            for (var $ = 0, F = C.length; $ < F; $++) {
                var B = C[$];
                mini.append(E, B)
            }
            C.length = 0
        }
        if (_.bodyParent) {
            var D = _.bodyParent;
            while (D.firstChild)
                E.appendChild(D.firstChild)
        }
        delete _.bodyParent;
        return A
    },
    createGroup: function (_) {
        var $ = mini.copyTo({
            _id: this._GroupId++,
            name: "",
            title: "",
            cls: "",
            style: "",
            iconCls: "",
            iconStyle: "",
            headerCls: "",
            headerStyle: "",
            bodyCls: "",
            bodyStyle: "",
            visible: true,
            enabled: true,
            showCollapseButton: true,
            expanded: true
        }, _);
        return $
    },
    setGroups: function (_) {
        if (!mini.isArray(_))
            return;
        this.removeAll();
        for (var $ = 0, A = _.length; $ < A; $++)
            this.addGroup(_[$])
    },
    getGroups: function () {
        return this.groups
    },
    addGroup: function (_, $) {
        if (typeof _ == "string")
            _ = {
                title: _
            };
        _ = this.createGroup(_);
        if (typeof $ != "number")
            $ = this.groups.length;
        this.groups.insert($, _);
        var B = this.Gnh(_);
        _._el = B;
        var $ = this.groups.indexOf(_),
		A = this.groups[$ + 1];
        if (A) {
            var C = this.getGroupEl(A);
            jQuery(C).before(B)
        }
        this[YaK]();
        return _
    },
    updateGroup: function ($, _) {
        var $ = this.getGroup($);
        if (!$)
            return;
        mini.copyTo($, _);
        this[YaK]()
    },
    removeGroup: function ($) {
        $ = this.getGroup($);
        if (!$)
            return;
        var _ = this.getGroupEl($);
        if (_)
            _.parentNode.removeChild(_);
        this.groups.remove($);
        this[YaK]()
    },
    removeAll: function () {
        for (var $ = this.groups.length - 1; $ >= 0; $--)
            this.removeGroup($)
    },
    moveGroup: function (_, $) {
        _ = this.getGroup(_);
        if (!_)
            return;
        target = this.getGroup($);
        var A = this.getGroupEl(_);
        this.groups.remove(_);
        if (target) {
            $ = this.groups.indexOf(target);
            this.groups.insert($, _);
            var B = this.getGroupEl(target);
            jQuery(B).before(A)
        } else {
            this.groups.add(_);
            this.KDCb.appendChild(A)
        }
        this[YaK]()
    },
    doUpdate: function () {
        for (var _ = 0, E = this.groups.length; _ < E; _++) {
            var A = this.groups[_],
			B = A._el,
			D = B.firstChild,
			C = B.lastChild,
			$ = "<div class=\"mini-outlookbar-icon " + A.iconCls + "\" style=\"" + A[Jhs] + ";\"></div>",
			F = "<div class=\"mini-tools\"><span class=\"mini-tools-collapse\"></span></div>" + ((A[Jhs] || A.iconCls) ? $ : "") + "<div class=\"mini-outlookbar-groupTitle\">" + A.title + "</div><div style=\"clear:both;\"></div>";
            D.innerHTML = F;
            if (A.enabled)
                ZVS(B, "mini-disabled");
            else
                E$_(B, "mini-disabled");
            E$_(B, A.cls);
            DaZ(B, A.style);
            E$_(C, A.bodyCls);
            DaZ(C, A.bodyStyle);
            E$_(D, A.headerCls);
            DaZ(D, A.headerStyle);
            ZVS(B, "mini-outlookbar-firstGroup");
            ZVS(B, "mini-outlookbar-lastGroup");
            if (_ == 0)
                E$_(B, "mini-outlookbar-firstGroup");
            if (_ == E - 1)
                E$_(B, "mini-outlookbar-lastGroup")
        }
        this[SA]()
    },
    doLayout: function () {
        if (!this.canLayout())
            return;
        if (this.W0Y)
            return;
        this.TF();
        for (var $ = 0, H = this.groups.length; $ < H; $++) {
            var _ = this.groups[$],
			B = _._el,
			D = B.lastChild;
            if (_.expanded) {
                E$_(B, "mini-outlookbar-expand");
                ZVS(B, "mini-outlookbar-collapse")
            } else {
                ZVS(B, "mini-outlookbar-expand");
                E$_(B, "mini-outlookbar-collapse")
            }
            D.style.height = "auto";
            D.style.display = _.expanded ? "block" : "none";
            B.style.display = _.visible ? "" : "none";
            var A = EvDb(B, true),
			E = PvB(D),
			G = _t(D);
            if (jQuery.boxModel)
                A = A - E.left - E.right - G.left - G.right;
            D.style.width = A + "px"
        }
        var F = this[Rlg](),
		C = this.getActiveGroup();
        if (!F && this[EPC] && C) {
            B = this.getGroupEl(this.activeIndex);
            B.lastChild.style.height = this.UUG() + "px"
        }
        mini.layout(this.KDCb)
    },
    TF: function () {
        if (this[Rlg]())
            this.KDCb.style.height = "auto";
        else {
            var $ = this[UT](true);
            if (!jQuery.boxModel) {
                var _ = _t(this.KDCb);
                $ = $ + _.top + _.bottom
            }
            if ($ < 0)
                $ = 0;
            this.KDCb.style.height = $ + "px"
        }
    },
    UUG: function () {
        var C = jQuery(this.el).height(),
		K = _t(this.KDCb);
        C = C - K.top - K.bottom;
        var A = this.getActiveGroup(),
		E = 0;
        for (var F = 0, D = this.groups.length; F < D; F++) {
            var _ = this.groups[F],
			G = this.getGroupEl(_);
            if (_.visible == false || _ == A)
                continue;
            var $ = G.lastChild.style.display;
            G.lastChild.style.display = "none";
            var J = jQuery(G).outerHeight();
            G.lastChild.style.display = $;
            var L = BRb(G);
            J = J + L.top + L.bottom;
            E += J
        }
        C = C - E;
        var H = this.getGroupEl(this.activeIndex);
        C = C - jQuery(H.firstChild).outerHeight();
        if (jQuery.boxModel) {
            var B = PvB(H.lastChild),
			I = _t(H.lastChild);
            C = C - B.top - B.bottom - I.top - I.bottom
        }
        B = PvB(H),
		I = _t(H),
		L = BRb(H);
        C = C - L.top - L.bottom;
        C = C - B.top - B.bottom - I.top - I.bottom;
        if (C < 0)
            C = 0;
        return C
    },
    getGroup: function ($) {
        if (typeof $ == "object")
            return $;
        if (typeof $ == "number")
            return this.groups[$];
        else
            for (var _ = 0, B = this.groups.length; _ < B; _++) {
                var A = this.groups[_];
                if (A.name == $)
                    return A
            }
},
TC: function (B) {
    for (var $ = 0, A = this.groups.length; $ < A; $++) {
        var _ = this.groups[$];
        if (_._id == B)
            return _
    }
},
getGroupEl: function ($) {
    var _ = this.getGroup($);
    if (!_)
        return null;
    return _._el
},
getGroupBodyEl: function ($) {
    var _ = this.getGroupEl($);
    if (_)
        return _.lastChild;
    return null
},
setAutoCollapse: function ($) {
    this[EPC] = $
},
getAutoCollapse: function () {
    return this[EPC]
},
setActiveIndex: function (_) {
    var $ = this.getGroup(_),
		A = this.getGroup(this.activeIndex),
		B = $ != A;
    if ($)
        this.activeIndex = this.groups.indexOf($);
    else
        this.activeIndex = -1;
    $ = this.getGroup(this.activeIndex);
    if ($) {
        var C = this.allowAnim;
        this.allowAnim = false;
        this.expandGroup($);
        this.allowAnim = C
    }
},
getActiveIndex: function () {
    return this.activeIndex
},
getActiveGroup: function () {
    return this.getGroup(this.activeIndex)
},
showGroup: function ($) {
    $ = this.getGroup($);
    if (!$ || $.visible == true)
        return;
    $.visible = true;
    this[YaK]()
},
hideGroup: function ($) {
    $ = this.getGroup($);
    if (!$ || $.visible == false)
        return;
    $.visible = false;
    this[YaK]()
},
toggleGroup: function ($) {
    $ = this.getGroup($);
    if (!$)
        return;
    if ($.expanded)
        this.collapseGroup($);
    else
        this.expandGroup($)
},
collapseGroup: function (_) {
    _ = this.getGroup(_);
    if (!_)
        return;
    var D = _.expanded,
		E = 0;
    if (this[EPC] && !this[Rlg]())
        E = this.UUG();
    var F = false;
    _.expanded = false;
    var $ = this.groups.indexOf(_);
    if ($ == this.activeIndex) {
        this.activeIndex = -1;
        F = true
    }
    var C = this.getGroupBodyEl(_);
    if (this.allowAnim && D) {
        this.W0Y = true;
        C.style.display = "block";
        C.style.height = "auto";
        if (this[EPC] && !this[Rlg]())
            C.style.height = E + "px";
        var A = {
            height: "1px"
        };
        E$_(C, "mini-outlookbar-overflow");
        var B = this,
			H = jQuery(C);
        H.animate(A, 180, function () {
            B.W0Y = false;
            ZVS(C, "mini-outlookbar-overflow");
            B[SA]()
        })
    } else
        this[SA]();
    var G = {
        group: _,
        index: this.groups.indexOf(_),
        name: _.name
    };
    this.fire("Collapse", G);
    if (F)
        this.fire("activechanged")
},
expandGroup: function ($) {
    $ = this.getGroup($);
    if (!$)
        return;
    var H = $.expanded;
    $.expanded = true;
    this.activeIndex = this.groups.indexOf($);
    fire = true;
    if (this[EPC])
        for (var D = 0, B = this.groups.length; D < B; D++) {
            var C = this.groups[D];
            if (C.expanded && C != $)
                this.collapseGroup(C)
        }
var G = this.getGroupBodyEl($);
if (this.allowAnim && H == false) {
    this.W0Y = true;
    G.style.display = "block";
    if (this[EPC] && !this[Rlg]()) {
        var A = this.UUG();
        G.style.height = (A) + "px"
    } else
        G.style.height = "auto";
    var _ = Cop(G);
    G.style.height = "1px";
    var E = {
        height: _ + "px"
    },
			I = G.style.overflow;
    G.style.overflow = "hidden";
    E$_(G, "mini-outlookbar-overflow");
    var F = this,
			K = jQuery(G);
    K.animate(E, 180, function () {
        G.style.overflow = I;
        ZVS(G, "mini-outlookbar-overflow");
        F.W0Y = false;
        F[SA]()
    })
} else
    this[SA]();
var J = {
    group: $,
    index: this.groups.indexOf($),
    name: $.name
};
this.fire("Expand", J);
if (fire)
    this.fire("activechanged")
},
Kts: function ($) {
    $ = this.getGroup($);
    var _ = {
        group: $,
        groupIndex: this.groups.indexOf($),
        groupName: $.name,
        cancel: false
    };
    if ($.expanded) {
        this.fire("BeforeCollapse", _);
        if (_.cancel == false)
            this.collapseGroup($)
    } else {
        this.fire("BeforeExpand", _);
        if (_.cancel == false)
            this.expandGroup($)
    }
},
Xr: function (B) {
    var _ = $Rz(B.target, "mini-outlookbar-group");
    if (!_)
        return null;
    var $ = _.id.split("$"),
		A = $[$.length - 1];
    return this.TC(A)
},
Qtm: function (A) {
    if (this.W0Y)
        return;
    var _ = $Rz(A.target, "mini-outlookbar-groupHeader");
    if (!_)
        return;
    var $ = this.Xr(A);
    if (!$)
        return;
    this.Kts($)
},
parseGroups: function (D) {
    var A = [];
    for (var $ = 0, C = D.length; $ < C; $++) {
        var B = D[$],
			_ = {};
        A.push(_);
        _.style = B.style.cssText;
        mini[A5ac](B, _, ["name", "title", "cls", "iconCls", "iconStyle", "headerCls", "headerStyle", "bodyCls", "bodyStyle"]);
        mini[QRH](B, _, ["visible", "enabled", "showCollapseButton", "expanded"]);
        _.bodyParent = B
    }
    return A
},
getAttrs: function ($) {
    var A = MD[Ov][RH][R05g](this, $);
    mini[A5ac]($, A, ["onactivechanged", "oncollapse", "onexpand"]);
    mini[QRH]($, A, ["autoCollapse", "allowAnim"]);
    mini[ClW]($, A, ["activeIndex"]);
    var _ = mini[SY0]($);
    A.groups = this.parseGroups(_);
    return A
}
});
H58(MD, "outlookbar");
KVD = function () {
    KVD[Ov][FaWb][R05g](this);
    this.data = []
};
ZPOi(KVD, MD, {
    url: "",
    textField: "text",
    iconField: "iconCls",
    urlField: "url",
    resultAsTree: false,
    itemsField: "children",
    idField: "id",
    parentField: "pid",
    style: "width:100%;height:100%;",
    set: function (_) {
        if (typeof _ == "string")
            return this;
        var A = _.url;
        delete _.url;
        var $ = _.activeIndex;
        delete _.activeIndex;
        KVD[Ov].set[R05g](this, _);
        if (A)
            this.setUrl(A);
        if (mini.isNumber($))
            this.setActiveIndex($);
        return this
    },
    uiCls: "mini-outlookmenu",
    destroy: function (B) {
        if (this.WyHm) {
            var _ = this.WyHm.clone();
            for (var $ = 0, C = _.length; $ < C; $++) {
                var A = _[$];
                A[Yr3P]()
            }
            this.WyHm.length = 0
        }
        KVD[Ov][Yr3P][R05g](this, B)
    },
    IGi: function () {
        var B = mini.getData(this.url);
        if (!B)
            B = [];
        if (this[WFK] == false)
            B = mini.arrayToTree(B, this.itemsField, this.idField, this[_v3e]);
        var _ = mini[Q$](B, this.itemsField, this.idField, this[_v3e]);
        for (var A = 0, C = _.length; A < C; A++) {
            var $ = _[A];
            $.text = $[this.textField];
            $.url = $[this.urlField];
            $.iconCls = $[this.iconField]
        }
        this.createNavBarMenu(B);
        this.fire("load")
    },
    load: function ($) {
        if (typeof $ == "string")
            this.setUrl($);
        else
            this.createNavBarMenu($)
    },
    setUrl: function ($) {
        this.url = $;
        this.IGi()
    },
    getUrl: function () {
        return this.url
    },
    setTextField: function ($) {
        this[T2m] = $
    },
    getTextField: function () {
        return this[T2m]
    },
    setIconField: function ($) {
        this.iconField = $
    },
    getIconField: function () {
        return this.iconField
    },
    setUrlField: function ($) {
        this[ZQd] = $
    },
    getUrlField: function () {
        return this[ZQd]
    },
    setResultAsTree: function ($) {
        this[WFK] = $
    },
    getResultAsTree: function () {
        return this[WFK]
    },
    setNodesField: function ($) {
        this.nodesField = $
    },
    getNodesField: function () {
        return this.nodesField
    },
    setIdField: function ($) {
        this[XsI] = $
    },
    getIdField: function () {
        return this[XsI]
    },
    setParentField: function ($) {
        this[_v3e] = $
    },
    getParentField: function () {
        return this[_v3e]
    },
    RRk: null,
    getSelected: function () {
        return this.RRk
    },
    getAttrs: function ($) {
        var _ = KVD[Ov][RH][R05g](this, $);
        _.text = $.innerHTML;
        mini[A5ac]($, _, ["url", "textField", "urlField", "idField", "parentField", "itemsField", "iconField", "onitemclick", "onitemselect"]);
        mini[QRH]($, _, ["resultAsTree"]);
        return _
    },
    autoCollapse: true,
    activeIndex: 0,
    createNavBarMenu: function (D) {
        if (!mini.isArray(D))
            D = [];
        this.data = D;
        var B = [];
        for (var _ = 0, E = this.data.length; _ < E; _++) {
            var $ = this.data[_],
			A = {};
            A.title = $.text;
            A.titleCls = $.iconCls;
            B.push(A);
            A._children = $[this.itemsField]
        }
        this.setGroups(B);
        this.setActiveIndex(this.activeIndex);
        this.WyHm = [];
        for (_ = 0, E = this.groups.length; _ < E; _++) {
            var A = this.groups[_],
			C = this.getGroupBodyEl(A),
			F = new Y6XM();
            F.set({
                style: "width:100%;height:100%;border:0;background:none",
                allowSelectItem: true,
                items: A._children
            });
            F[Tlr9](C);
            F.on("itemclick", this.AlMT, this);
            F.on("itemselect", this.Yk0, this);
            this.WyHm.push(F);
            delete A._children
        }
    },
    AlMT: function (_) {
        var $ = {
            item: _.item,
            htmlEvent: _.htmlEvent
        };
        this.fire("itemclick", $)
    },
    Yk0: function (C) {
        if (!C.item)
            return;
        for (var $ = 0, A = this.WyHm.length; $ < A; $++) {
            var B = this.WyHm[$];
            if (B != C.sender)
                B.setSelectedItem(null)
        }
        var _ = {
            item: C.item,
            htmlEvent: C.htmlEvent
        };
        this.RRk = C.item;
        this.fire("itemselect", _)
    }
});
H58(KVD, "outlookmenu");
VVcI = function () {
    VVcI[Ov][FaWb][R05g](this);
    this.data = []
};
ZPOi(VVcI, MD, {
    url: "",
    textField: "text",
    iconField: "iconCls",
    urlField: "url",
    resultAsTree: false,
    nodesField: "children",
    idField: "id",
    parentField: "pid",
    style: "width:100%;height:100%;",
    set: function (_) {
        if (typeof _ == "string")
            return this;
        var A = _.url;
        delete _.url;
        var $ = _.activeIndex;
        delete _.activeIndex;
        VVcI[Ov].set[R05g](this, _);
        if (A)
            this.setUrl(A);
        if (mini.isNumber($))
            this.setActiveIndex($);
        return this
    },
    uiCls: "mini-outlooktree",
    destroy: function (B) {
        if (this.Ly3) {
            var _ = this.Ly3.clone();
            for (var $ = 0, C = _.length; $ < C; $++) {
                var A = _[$];
                A[Yr3P]()
            }
            this.Ly3.length = 0
        }
        VVcI[Ov][Yr3P][R05g](this, B)
    },
    IGi: function () {
        var B = mini.getData(this.url);
        if (!B)
            B = [];
        if (this[WFK] == false)
            B = mini.arrayToTree(B, this.nodesField, this.idField, this[_v3e]);
        var _ = mini[Q$](B, this.nodesField, this.idField, this[_v3e]);
        for (var A = 0, C = _.length; A < C; A++) {
            var $ = _[A];
            $.text = $[this.textField];
            $.url = $[this.urlField];
            $.iconCls = $[this.iconField]
        }
        this.createNavBarTree(B);
        this.fire("load")
    },
    load: function ($) {
        if (typeof $ == "string")
            this.setUrl($);
        else
            this.createNavBarTree($)
    },
    setUrl: function ($) {
        this.url = $;
        this.IGi()
    },
    getUrl: function () {
        return this.url
    },
    setTextField: function ($) {
        this[T2m] = $
    },
    getTextField: function () {
        return this[T2m]
    },
    setIconField: function ($) {
        this.iconField = $
    },
    getIconField: function () {
        return this.iconField
    },
    setUrlField: function ($) {
        this[ZQd] = $
    },
    getUrlField: function () {
        return this[ZQd]
    },
    setResultAsTree: function ($) {
        this[WFK] = $
    },
    getResultAsTree: function () {
        return this[WFK]
    },
    setNodesField: function ($) {
        this.nodesField = $
    },
    getNodesField: function () {
        return this.nodesField
    },
    setIdField: function ($) {
        this[XsI] = $
    },
    getIdField: function () {
        return this[XsI]
    },
    setParentField: function ($) {
        this[_v3e] = $
    },
    getParentField: function () {
        return this[_v3e]
    },
    RRk: null,
    getSelected: function () {
        return this.RRk
    },
    selectNode: function (_) {
        _ = this[Ook2](_);
        if (!_)
            return;
        var $ = this._getOwnerTree(_);
        $.selectNode(_)
    },
    expandPath: function (_) {
        _ = this[Ook2](_);
        if (!_)
            return;
        var $ = this._getOwnerTree(_);
        $.expandPath(_);
        this.expandGroup($._ownerGroup)
    },
    getNode: function (A) {
        for (var $ = 0, C = this.Ly3.length; $ < C; $++) {
            var _ = this.Ly3[$],
			B = _[Ook2](A);
            if (B)
                return B
        }
        return null
    },
    _getOwnerTree: function (A) {
        if (!A)
            return;
        for (var $ = 0, B = this.Ly3.length; $ < B; $++) {
            var _ = this.Ly3[$];
            if (_.JqON[A._id])
                return _
        }
    },
    expandOnLoad: false,
    setExpandOnLoad: function ($) {
        this.expandOnLoad = $
    },
    getExpandOnLoad: function () {
        return this.expandOnLoad
    },
    getAttrs: function (_) {
        var A = VVcI[Ov][RH][R05g](this, _);
        A.text = _.innerHTML;
        mini[A5ac](_, A, ["url", "textField", "urlField", "idField", "parentField", "nodesField", "iconField", "onnodeclick", "onnodeselect", "onnodemousedown", "expandOnLoad"]);
        mini[QRH](_, A, ["resultAsTree"]);
        if (A.expandOnLoad) {
            var $ = parseInt(A.expandOnLoad);
            if (mini.isNumber($))
                A.expandOnLoad = $;
            else
                A.expandOnLoad = A.expandOnLoad == "true" ? true : false
        }
        return A
    },
    autoCollapse: true,
    activeIndex: 0,
    createNavBarTree: function (D) {
        if (!mini.isArray(D))
            D = [];
        this.data = D;
        var B = [];
        for (var _ = 0, E = this.data.length; _ < E; _++) {
            var $ = this.data[_],
			A = {};
            A.title = $.text;
            A.titleCls = $.iconCls;
            B.push(A);
            A._children = $[this.nodesField]
        }
        this.setGroups(B);
        this.setActiveIndex(this.activeIndex);
        this.Ly3 = [];
        for (_ = 0, E = this.groups.length; _ < E; _++) {
            var A = this.groups[_],
			C = this.getGroupBodyEl(A),
			D = new Yps7();
            D.set({
                expandOnLoad: this.expandOnLoad,
                showTreeIcon: true,
                style: "width:100%;height:100%;border:0;background:none",
                data: A._children
            });
            D[Tlr9](C);
            D.on("nodeclick", this.WvA, this);
            D.on("nodeselect", this.JUN, this);
            D.on("nodemousedown", this.__OnNodeMouseDown, this);
            this.Ly3.push(D);
            delete A._children;
            D._ownerGroup = A
        }
    },
    __OnNodeMouseDown: function (_) {
        var $ = {
            node: _.node,
            isLeaf: _.sender.isLeaf(_.node),
            htmlEvent: _.htmlEvent
        };
        this.fire("nodemousedown", $)
    },
    WvA: function (_) {
        var $ = {
            node: _.node,
            isLeaf: _.sender.isLeaf(_.node),
            htmlEvent: _.htmlEvent
        };
        this.fire("nodeclick", $)
    },
    JUN: function (C) {
        if (!C.node)
            return;
        for (var $ = 0, B = this.Ly3.length; $ < B; $++) {
            var A = this.Ly3[$];
            if (A != C.sender)
                A.selectNode(null)
        }
        var _ = {
            node: C.node,
            isLeaf: C.sender.isLeaf(C.node),
            htmlEvent: C.htmlEvent
        };
        this.RRk = C.node;
        this.fire("nodeselect", _)
    }
});
H58(VVcI, "outlooktree");
mini.NavBar = function () {
    mini.NavBar[Ov][FaWb][R05g](this)
};
ZPOi(mini.NavBar, MD, {
    uiCls: "mini-navbar"
});
H58(mini.NavBar, "navbar");
mini.NavBarMenu = function () {
    mini.NavBarMenu[Ov][FaWb][R05g](this)
};
ZPOi(mini.NavBarMenu, KVD, {
    uiCls: "mini-navbarmenu"
});
H58(mini.NavBarMenu, "navbarmenu");
mini.NavBarTree = function () {
    mini.NavBarTree[Ov][FaWb][R05g](this)
};
ZPOi(mini.NavBarTree, VVcI, {
    uiCls: "mini-navbartree"
});
H58(mini.NavBarTree, "navbartree");
mini.ToolBar = function () {
    mini.ToolBar[Ov][FaWb][R05g](this)
};
ZPOi(mini.ToolBar, Jva, {
    _clearBorder: false,
    style: "",
    uiCls: "mini-toolbar",
    _create: function () {
        this.el = document.createElement("div");
        this.el.className = "mini-toolbar"
    },
    _initEvents: function () { },
    doLayout: function () {
        if (!this.canLayout())
            return;
        var A = mini[SY0](this.el, true);
        for (var $ = 0, _ = A.length; $ < _; $++)
            mini.layout(A[$])
    },
    set_bodyParent: function ($) {
        if (!$)
            return;
        this.el = $;
        this[SA]()
    },
    getAttrs: function ($) {
        var _ = {};
        mini[A5ac]($, _, ["id", "borderStyle"]);
        this.el = $;
        this.el.uid = this.uid;
        return _
    }
});
H58(mini.ToolBar, "toolbar");
Yps7 = function ($) {
    this._ajaxOption = {
        async: false,
        type: "get"
    };
    this.root = {
        _id: -1,
        _pid: "",
        _level: -1
    };
    this.data = this.root[this.nodesField] = [];
    this.JqON = {};
    this._7A = {};
    this._viewNodes = null;
    Yps7[Ov][FaWb][R05g](this, $);
    this.on("beforeexpand", function (B) {
        var $ = B.node,
		A = this.isLeaf($),
		_ = $[this.nodesField];
        if (!A && (!_ || _.length == 0)) {
            B.cancel = true;
            this.loadNode($)
        }
    }, this);
    this[YaK]()
};
Yps7.NodeUID = 1;
var lastNodeLevel = [];
ZPOi(Yps7, Jva, {
    isTree: true,
    QOA: "block",
    removeOnCollapse: true,
    expandOnDblClick: true,
    value: "",
    HWi1: null,
    allowSelect: true,
    showCheckBox: false,
    showFolderCheckBox: true,
    showExpandButtons: true,
    enableHotTrack: true,
    showArrow: false,
    expandOnLoad: false,
    delimiter: ",",
    url: "",
    root: null,
    resultAsTree: true,
    parentField: "pid",
    idField: "id",
    textField: "text",
    iconField: "iconCls",
    nodesField: "children",
    showTreeIcon: false,
    showTreeLines: true,
    checkRecursive: false,
    allowAnim: true,
    T$mk: "mini-tree-checkbox",
    TT: "mini-tree-selectedNode",
    CHu: "mini-tree-node-hover",
    leafIcon: "mini-tree-leaf",
    folderIcon: "mini-tree-folder",
    Q5O: "mini-tree-border",
    Dp: "mini-tree-header",
    SR4M: "mini-tree-body",
    Hq_: "mini-tree-node",
    RWsQ: "mini-tree-nodes",
    Lzj: "mini-tree-expand",
    _s_: "mini-tree-collapse",
    Fipf: "mini-tree-node-ecicon",
    NDJK: "mini-tree-nodeshow",
    set: function (A) {
        if (typeof A == "string")
            return this;
        var $ = A.value;
        delete A.value;
        var B = A.url;
        delete A.url;
        var _ = A.data;
        delete A.data;
        Yps7[Ov].set[R05g](this, A);
        if (!mini.isNull(_))
            this[JmQP](_);
        if (!mini.isNull(B))
            this.setUrl(B);
        if (!mini.isNull($))
            this[XlA]($);
        return this
    },
    uiCls: "mini-tree",
    _create: function () {
        this.el = document.createElement("div");
        this.el.className = "mini-tree";
        if (this[_l3N] == true)
            E$_(this.el, "mini-tree-treeLine");
        this.el.style.display = "block";
        this.KDCb = mini.append(this.el, "<div class=\"" + this.Q5O + "\">" + "<div class=\"" + this.Dp + "\"></div><div class=\"" + this.SR4M + "\"></div></div>");
        this.OW = this.KDCb.childNodes[0];
        this.Jo4 = this.KDCb.childNodes[1];
        this._DragDrop = new Y6El(this)
    },
    _initEvents: function () {
        VMPY(function () {
            Boy(this.el, "click", this.Qtm, this);
            Boy(this.el, "dblclick", this._89, this);
            Boy(this.el, "mousedown", this.CgJ, this);
            Boy(this.el, "mousemove", this._jK, this);
            Boy(this.el, "mouseout", this.S0ud, this)
        }, this)
    },
    load: function ($) {
        if (typeof $ == "string") {
            this.url = $;
            this.IGi({}, this.root)
        } else
            this[JmQP]($)
    },
    setData: function ($) {
        this[Aw]($);
        this.data = $;
        this._cellErrors = [];
        this._cellMapErrors = {}

    },
    getData: function () {
        return this.data
    },
    toArray: function () {
        return this.getList()
    },
    getList: function () {
        if (!this.WZX) {
            this.WZX = mini[Q$](this.root[this.nodesField], this.nodesField, this.idField, this.parentField, "-1");
            this._indexs = {};
            for (var $ = 0, A = this.WZX.length; $ < A; $++) {
                var _ = this.WZX[$];
                this._indexs[_[this.idField]] = $
            }
        }
        return this.WZX
    },
    _clearTree: function () {
        this.WZX = null;
        this._indexs = null
    },
    loadData: function ($) {
        if (!mini.isArray($))
            $ = [];
        this.root[this.nodesField] = $;
        this.UJa(this.root, null);
        this.cascadeChild(this.root, function (_) {
            if (mini.isNull(_.expanded)) {
                var $ = this.getLevel(_);
                if (this.expandOnLoad === true || (mini.isNumber(this.expandOnLoad) && $ <= this.expandOnLoad))
                    _.expanded = true;
                else
                    _.expanded = false
            }
        }, this);
        this._viewNodes = null;
        this[YaK]()
    },
    clearData: function () {
        this[Aw]([])
    },
    setUrl: function ($) {
        this.url = $;
        this.load($)
    },
    getUrl: function () {
        return this.url
    },
    loadNode: function (C, $) {
        C = this[Ook2](C);
        if (!C)
            return;
        if (this.isLeaf(C))
            return;
        var B = {};
        B[this.idField] = this[T03](C);
        var _ = this;
        _[SLy](C, "mini-tree-loading");
        var D = this._ajaxOption.async;
        this._ajaxOption.async = true;
        var A = new Date();
        this.IGi(B, C, function (B) {
            var E = new Date() - A;
            if (E < 60)
                E = 60 - E;
            setTimeout(function () {
                _._ajaxOption.async = D;
                _[LeN](C, "mini-tree-loading");
                _.removeNodes(C[_.nodesField]);
                if (B && B.length > 0) {
                    _.addNodes(B, C);
                    if ($ !== false)
                        _[KKj](C, true);
                    else
                        _[Hb3m](C, true);
                    _.fire("loadnode")
                } else {
                    delete C.isLeaf;
                    _.WMk(C)
                }
            }, E)
        }, function ($) {
            _[LeN](C, "mini-tree-loading")
        });
        this.ajaxAsync = false
    },
    _ajaxOption: {
        async: false,
        type: "get"
    },
    setAjaxOption: function ($) {
        mini.copyTo(this._ajaxOption, $)
    },
    getAjaxOption: function ($) {
        return this._ajaxOption
    },
    IGi: function (_, A, B, C) {
        var E = A == this.root,
		D = {
		    url: this.url,
		    async: this._ajaxOption.async,
		    type: this._ajaxOption.type,
		    params: _,
		    cancel: false,
		    node: A,
		    isRoot: E
		};
        this.fire("beforeload", D);
        if (D.cancel == true)
            return;
        if (A != this.root);
        var $ = this;
        this.V5o = jQuery.ajax({
            url: D.url,
            async: D.async,
            data: D.params,
            type: D.type,
            cache: false,
            dataType: "text",
            success: function (D, C, _) {
                var F = null;
                try {
                    F = mini.decode(D)
                } catch (G) {
                    F = [];
                    throw new Error("tree json is error!")
                }
                var G = {
                    result: F,
                    data: F,
                    cancel: false,
                    node: A
                };
                if ($[WFK] == false)
                    G.data = mini.arrayToTree(G.data, $.nodesField, $.idField, $[_v3e]);
                $.fire("preload", G);
                if (G.cancel == true)
                    return;
                if (E)
                    $[JmQP](G.data);
                if (B)
                    B(G.data);
                $.fire("load", G)
            },
            error: function (_, B, A) {
                var D = {
                    xmlHttp: _,
                    errorCode: B
                };
                if (C)
                    C(D);
                $.fire("loaderror", D)
            }
        })
    },
    getItemValue: function ($) {
        if (!$)
            return "";
        var _ = $[this.idField];
        return mini.isNull(_) ? "" : String(_)
    },
    getItemText: function ($) {
        if (!$)
            return "";
        var _ = $[this.textField];
        return mini.isNull(_) ? "" : String(_)
    },
    IO: function ($) {
        var B = this[Zu];
        if (B && this.hasChildren($))
            B = this[F$q];
        var _ = this[IC0]($),
		A = {
		    isLeaf: this.isLeaf($),
		    node: $,
		    nodeHtml: _,
		    nodeCls: "",
		    nodeStyle: "",
		    showCheckBox: B,
		    iconCls: this.getNodeIcon($),
		    showTreeIcon: this.showTreeIcon
		};
        this.fire("drawnode", A);
        if (A.nodeHtml === null || A.nodeHtml === undefined || A.nodeHtml === "")
            A.nodeHtml = "&nbsp;";
        return A
    },
    Ea$: function (D, P, H) {
        var O = !H;
        if (!H)
            H = [];
        var K = D[this.textField];
        if (K === null || K === undefined)
            K = "";
        var M = this.isLeaf(D),
		$ = this.getLevel(D),
		Q = this.IO(D),
		E = Q.nodeCls;
        if (!M)
            E = this.isExpandedNode(D) ? this.Lzj : this._s_;
        if (this.HWi1 == D)
            E += " " + this.TT;
        var F = this[SY0](D),
		I = F && F.length > 0;
        H[H.length] = "<div class=\"mini-tree-nodetitle " + E + "\" style=\"" + Q.nodeStyle + "\">";
        var A = this[CYf](D),
		_ = 0;
        for (var J = _; J <= $; J++) {
            if (J == $)
                continue;
            if (M)
                if (this[KUe] == false && J >= $ - 1)
                    continue;
        var L = "";
        if (this._isInViewLastNode(D, J))
            L = "background:none";
        H[H.length] = "<span class=\"mini-tree-indent \" style=\"" + L + "\"></span>"
    }
    var C = "";
    if (this._isViewFirstNode(D))
        C = "mini-tree-node-ecicon-first";
    else if (this._isViewLastNode(D))
        C = "mini-tree-node-ecicon-last";
    if (this._isViewFirstNode(D) && this._isViewLastNode(D))
        C = "mini-tree-node-ecicon-last";
    if (!M)
        H[H.length] = "<a class=\"" + this.Fipf + " " + C + "\" style=\"" + (this[KUe] ? "" : "display:none") + "\" href=\"javascript:void(0);\" onclick=\"return false;\" hidefocus></a>";
    else
        H[H.length] = "<span class=\"" + this.Fipf + " " + C + "\" ></span>";
    H[H.length] = "<span class=\"mini-tree-nodeshow\">";
    if (Q[HGX])
        H[H.length] = "<span class=\"" + Q.iconCls + " mini-tree-icon\"></span>";
    if (Q[Zu]) {
        var G = this.MDBn(D),
			N = this.isCheckedNode(D);
        H[H.length] = "<input type=\"checkbox\" id=\"" + G + "\" class=\"" + this.T$mk + "\" hidefocus " + (N ? "checked" : "") + "/>"
    }
    H[H.length] = "<span class=\"mini-tree-nodetext\">";
    if (P) {
        var B = this.uid + "$edit$" + D._id,
			K = D[this.textField];
        if (K === null || K === undefined)
            K = "";
        H[H.length] = "<input id=\"" + B + "\" type=\"text\" class=\"mini-tree-editinput\" value=\"" + K + "\"/>"
    } else
        H[H.length] = Q.nodeHtml;
    H[H.length] = "</span>";
    H[H.length] = "</span>";
    H[H.length] = "</div>";
    if (O)
        return H.join("")
},
Z7q$: function (A, D) {
    var C = !D;
    if (!D)
        D = [];
    if (!A)
        return "";
    var _ = this.St7(A),
		$ = this.isVisibleNode(A) ? "" : "display:none";
    D[D.length] = "<div id=\"";
    D[D.length] = _;
    D[D.length] = "\" class=\"";
    D[D.length] = this.Hq_;
    D[D.length] = "\" style=\"";
    D[D.length] = $;
    D[D.length] = "\">";
    this.Ea$(A, false, D);
    var B = this._getViewChildNodes(A);
    if (B)
        if (this.removeOnCollapse && this.isExpandedNode(A))
            this.Zmkf(B, A, D);
D[D.length] = "</div>";
if (C)
    return D.join("")
},
Zmkf: function (F, B, G) {
    var E = !G;
    if (!G)
        G = [];
    if (!F)
        return "";
    var C = this.FZE(B),
		$ = this.isExpandedNode(B) ? "" : "display:none";
    G[G.length] = "<div id=\"";
    G[G.length] = C;
    G[G.length] = "\" class=\"";
    G[G.length] = this.RWsQ;
    G[G.length] = "\" style=\"";
    G[G.length] = $;
    G[G.length] = "\">";
    for (var _ = 0, D = F.length; _ < D; _++) {
        var A = F[_];
        this.Z7q$(A, G)
    }
    G[G.length] = "</div>";
    if (E)
        return G.join("")
},
doUpdate: function () {
    if (!this.QYky)
        return;
    var $ = this._getViewChildNodes(this.root),
		A = [];
    this.Zmkf($, this.root, A);
    var _ = A.join("");
    this.Jo4.innerHTML = _;
    this.$A()
},
Fuq: function () { },
$A: function () {
    var $ = this;
    if (this.Cb)
        return;
    this.Cb = setTimeout(function () {
        $[SA]();
        $.Cb = null
    }, 1)
},
doLayout: function () {
    if (this[Zu])
        E$_(this.el, "mini-tree-showCheckBox");
    else
        ZVS(this.el, "mini-tree-showCheckBox");
    if (this[JYw0])
        E$_(this.el, "mini-tree-hottrack");
    else
        ZVS(this.el, "mini-tree-hottrack");
    var $ = this.el.firstChild;
    if ($)
        E$_($, "mini-tree-rootnodes")
},
filter: function (C, B) {
    B = B || this;
    var A = this._viewNodes = {},
		_ = this.nodesField;
    function $(G) {
        var J = G[_];
        if (!J)
            return false;
        var K = G._id,
			H = [];
        for (var D = 0, I = J.length; D < I; D++) {
            var F = J[D],
				L = $(F),
				E = C[R05g](B, F, D, this);
            if (E === true || L)
                H.push(F)
        }
        if (H.length > 0)
            A[K] = H;
        return H.length > 0
    }
    $(this.root);
    this[YaK]()
},
clearFilter: function () {
    if (this._viewNodes) {
        this._viewNodes = null;
        this[YaK]()
    }
},
setShowCheckBox: function ($) {
    if (this[Zu] != $) {
        this[Zu] = $;
        this[YaK]()
    }
},
getShowCheckBox: function () {
    return this[Zu]
},
setShowFolderCheckBox: function ($) {
    if (this[F$q] != $) {
        this[F$q] = $;
        this[YaK]()
    }
},
getShowFolderCheckBox: function () {
    return this[F$q]
},
setAllowSelect: function ($) {
    if (this[NQ] != $) {
        this[NQ] = $;
        this[YaK]()
    }
},
getAllowSelect: function () {
    return this[NQ]
},
setShowTreeIcon: function ($) {
    if (this[HGX] != $) {
        this[HGX] = $;
        this[YaK]()
    }
},
getShowTreeIcon: function () {
    return this[HGX]
},
setShowExpandButtons: function ($) {
    if (this[KUe] != $) {
        this[KUe] = $;
        this[YaK]()
    }
},
getShowExpandButtons: function () {
    return this[KUe]
},
setEnableHotTrack: function ($) {
    if (this[JYw0] != $) {
        this[JYw0] = $;
        this[SA]()
    }
},
getEnableHotTrack: function () {
    return this[JYw0]
},
setExpandOnLoad: function ($) {
    this.expandOnLoad = $
},
getExpandOnLoad: function () {
    return this.expandOnLoad
},
setCheckRecursive: function ($) {
    if (this[Tj] != $)
        this[Tj] = $
},
getCheckRecursive: function () {
    return this[Tj]
},
getNodeIcon: function (_) {
    var $ = _[this.iconField];
    if (!$)
        if (this.isLeaf(_))
            $ = this.leafIcon;
        else
            $ = this.folderIcon;
return $
},
isAncestor: function (_, B) {
    if (_ == B)
        return true;
    if (!_ || !B)
        return false;
    var A = this[X3h](B);
    for (var $ = 0, C = A.length; $ < C; $++)
        if (A[$] == _)
            return true;
return false
},
getAncestors: function (A) {
    var _ = [];
    while (1) {
        var $ = this[CYf](A);
        if (!$ || $ == this.root)
            break;
        _[_.length] = $;
        A = $
    }
    _.reverse();
    return _
},
getRootNode: function () {
    return this.root
},
getParentNode: function ($) {
    if (!$)
        return null;
    if ($._pid == this.root._id)
        return this.root;
    return this.JqON[$._pid]
},
_isViewFirstNode: function (_) {
    if (this._viewNodes) {
        var $ = this[CYf](_),
			A = this._getViewChildNodes($);
        return A[0] === _
    } else
        return this[GHf](_)
},
_isViewLastNode: function (_) {
    if (this._viewNodes) {
        var $ = this[CYf](_),
			A = this._getViewChildNodes($);
        return A[A.length - 1] === _
    } else
        return this.isLastNode(_)
},
_isInViewLastNode: function (D, $) {
    if (this._viewNodes) {
        var C = null,
			A = this[X3h](D);
        for (var _ = 0, E = A.length; _ < E; _++) {
            var B = A[_];
            if (this.getLevel(B) == $)
                C = B
        }
        if (!C || C == this.root)
            return false;
        return this._isViewLastNode(C)
    } else
        return this.isInLastNode(D, $)
},
_getViewChildNodes: function ($) {
    if (this._viewNodes)
        return this._viewNodes[$._id];
    else
        return this[SY0]($)
},
getChildNodes: function ($) {
    $ = this[Ook2]($);
    if (!$)
        return null;
    return $[this.nodesField]
},
getAllChildNodes: function ($) {
    $ = this[Ook2]($);
    if (!$)
        return [];
    var _ = [];
    this.cascadeChild($, function ($) {
        _.push($)
    }, this);
    return _
},
indexOf: function (_) {
    _ = this[Ook2](_);
    if (!_)
        return -1;
    this.getList();
    var $ = this._indexs[_[this.idField]];
    if (mini.isNull($))
        return -1;
    return $
},
getAt: function (_) {
    var $ = this.getList();
    return $[_]
},
indexOfChildren: function (A) {
    var $ = this[CYf](A);
    if (!$)
        return -1;
    var _ = $[this.nodesField];
    return _.indexOf(A)
},
hasChildren: function ($) {
    var _ = this[SY0]($);
    return !!(_ && _.length > 0)
},
isLeaf: function ($) {
    if (!$ || $.isLeaf === false)
        return false;
    var _ = this[SY0]($);
    if (_ && _.length > 0)
        return false;
    return true
},
getLevel: function ($) {
    return $._level
},
isExpandedNode: function ($) {
    $ = this[Ook2]($);
    if (!$)
        return false;
    return $.expanded == true || mini.isNull($.expanded)
},
isCheckedNode: function ($) {
    return $.checked == true
},
isVisibleNode: function ($) {
    return $.visible !== false
},
isEnabledNode: function ($) {
    return $.enabled !== false || this.enabled
},
isFirstNode: function (_) {
    var $ = this[CYf](_),
		A = this[SY0]($);
    return A[0] === _
},
isLastNode: function (_) {
    var $ = this[CYf](_),
		A = this[SY0]($);
    return A[A.length - 1] === _
},
isInLastNode: function (D, $) {
    var C = null,
		A = this[X3h](D);
    for (var _ = 0, E = A.length; _ < E; _++) {
        var B = A[_];
        if (this.getLevel(B) == $)
            C = B
    }
    if (!C || C == this.root)
        return false;
    return this.isLastNode(C)
},
bubbleParent: function (_, B, A) {
    A = A || this;
    if (_)
        B[R05g](this, _);
    var $ = this[CYf](_);
    if ($ && $ != this.root)
        this.bubbleParent($, B, A)
},
cascadeChild: function (A, E, B) {
    if (!E)
        return;
    if (!A)
        A = this.root;
    var D = A[this.nodesField];
    if (D) {
        D = D.clone();
        for (var $ = 0, C = D.length; $ < C; $++) {
            var _ = D[$];
            if (E[R05g](B || this, _, $, A) === false)
                return;
            this.cascadeChild(_, E, B)
        }
    }
},
eachChild: function (B, F, C) {
    if (!F || !B)
        return;
    var E = B[this.nodesField];
    if (E) {
        var _ = E.clone();
        for (var A = 0, D = _.length; A < D; A++) {
            var $ = _[A];
            if (F[R05g](C || this, $, A, B) === false)
                break
        }
    }
},
UJa: function (_, $) {
    if (!_._id)
        _._id = Yps7.NodeUID++;
    this.JqON[_._id] = _;
    this._7A[_[this.idField]] = _;
    _._pid = $ ? $._id : "";
    _._level = $ ? $._level + 1 : -1;
    this.cascadeChild(_, function (A, $, _) {
        if (!A._id)
            A._id = Yps7.NodeUID++;
        this.JqON[A._id] = A;
        this._7A[A[this.idField]] = A;
        A._pid = _._id;
        A._level = _._level + 1
    }, this);
    this._clearTree()
},
NL: function (_) {
    var $ = this;
    function A(_) {
        $.WMk(_)
    }
    if (_ != this.root)
        A(_);
    this.cascadeChild(_, function ($) {
        A($)
    }, this)
},
removeNodes: function (B) {
    if (!mini.isArray(B))
        return;
    B = B.clone();
    for (var $ = 0, A = B.length; $ < A; $++) {
        var _ = B[$];
        this[Gwl](_)
    }
},
WMk: function ($) {
    var A = this.Ea$($),
		_ = this._getNodeEl($);
    if (_)
        jQuery(_.firstChild).replaceWith(A)
},
setNodeText: function (_, $) {
    _ = this[Ook2](_);
    if (!_)
        return;
    _[this.textField] = $;
    this.WMk(_)
},
setNodeIconCls: function (_, $) {
    _ = this[Ook2](_);
    if (!_)
        return;
    _[this.iconField] = $;
    this.WMk(_)
},
updateNode: function (_, $) {
    _ = this[Ook2](_);
    if (!_ || !$)
        return;
    var A = _[this.nodesField];
    mini.copyTo(_, $);
    _[this.nodesField] = A;
    this.WMk(_)
},
removeNode: function (A) {
    A = this[Ook2](A);
    if (!A)
        return;
    if (this.HWi1 == A)
        this.HWi1 = null;
    var D = [A];
    this.cascadeChild(A, function ($) {
        D.push($)
    }, this);
    var _ = this[CYf](A);
    _[this.nodesField].remove(A);
    this.UJa(A, _);
    var B = this._getNodeEl(A);
    if (B)
        B.parentNode.removeChild(B);
    this.NL(_);
    for (var $ = 0, C = D.length; $ < C; $++) {
        var A = D[$];
        delete A._id;
        delete A._pid;
        delete this.JqON[A._id];
        delete this._7A[A[this.idField]]
    }
},
addNodes: function (D, _, A) {
    if (!mini.isArray(D))
        return;
    for (var $ = 0, C = D.length; $ < C; $++) {
        var B = D[$];
        this.addNode(B, A, _)
    }
},
addNode: function (C, $, _) {
    C = this[Ook2](C);
    if (!C)
        return;
    if (!_)
        $ = "add";
    var B = _;
    switch ($) {
        case "before":
            if (!B)
                return;
            _ = this[CYf](B);
            var A = _[this.nodesField];
            $ = A.indexOf(B);
            break;
        case "after":
            if (!B)
                return;
            _ = this[CYf](B);
            A = _[this.nodesField];
            $ = A.indexOf(B) + 1;
            break;
        case "add":
            break;
        default:
            break
    }
    _ = this[Ook2](_);
    if (!_)
        _ = this.root;
    var F = _[this.nodesField];
    if (!F)
        F = _[this.nodesField] = [];
    $ = parseInt($);
    if (isNaN($))
        $ = F.length;
    B = F[$];
    if (!B)
        $ = F.length;
    F.insert($, C);
    this.UJa(C, _);
    var E = this.YHX(_);
    if (E) {
        var H = this.Z7q$(C),
			$ = F.indexOf(C) + 1,
			B = F[$];
        if (B) {
            var G = this._getNodeEl(B);
            jQuery(G).before(H)
        } else
            mini.append(E, H)
    } else {
        var H = this.Z7q$(_),
			D = this._getNodeEl(_);
        jQuery(D).replaceWith(H)
    }
    _ = this[CYf](C);
    this.NL(_)
},
moveNodes: function (E, B, _) {
    if (!E || E.length == 0 || !B || !_)
        return;
    this.beginUpdate();
    var A = this;
    for (var $ = 0, D = E.length; $ < D; $++) {
        var C = E[$];
        this.moveNode(C, B, _);
        if ($ != 0) {
            B = C;
            _ = "after"
        }
    }
    this.endUpdate()
},
moveNode: function (G, E, C) {
    G = this[Ook2](G);
    E = this[Ook2](E);
    if (!G || !E || !C)
        return false;
    if (this.isAncestor(G, E))
        return false;
    var $ = -1,
		_ = null;
    switch (C) {
        case "before":
            _ = this[CYf](E);
            $ = this.indexOfChildren(E);
            break;
        case "after":
            _ = this[CYf](E);
            $ = this.indexOfChildren(E) + 1;
            break;
        default:
            _ = E;
            var B = this[SY0](_);
            if (!B)
                B = _[this.nodesField] = [];
            $ = B.length;
            break
    }
    var F = {},
		B = this[SY0](_);
    B.insert($, F);
    var D = this[CYf](G),
		A = this[SY0](D);
    A.remove(G);
    $ = B.indexOf(F);
    B[$] = G;
    this.UJa(G, _);
    this[YaK]();
    return true
},
isEditingNode: function ($) {
    return this._editingNode == $
},
beginEdit: function (_) {
    _ = this[Ook2](_);
    if (!_)
        return;
    var A = this._getNodeEl(_),
		B = this.Ea$(_, true),
		A = this._getNodeEl(_);
    if (A)
        jQuery(A.firstChild).replaceWith(B);
    this._editingNode = _;
    var $ = this.uid + "$edit$" + _._id;
    this._editInput = document.getElementById($);
    this._editInput.focus();
    mini.selectRange(this._editInput, 1000, 1000);
    Boy(this._editInput, "keydown", this._oX, this);
    Boy(this._editInput, "blur", this.UHU, this)
},
cancelEdit: function () {
    if (this._editingNode) {
        this.WMk(this._editingNode);
        Ej(this._editInput, "keydown", this._oX, this);
        Ej(this._editInput, "blur", this.UHU, this)
    }
    this._editingNode = null;
    this._editInput = null
},
_oX: function (_) {
    if (_.keyCode == 13) {
        var $ = this._editInput.value;
        this.setNodeText(this._editingNode, $);
        this[IXv]()
    } else if (_.keyCode == 27)
        this[IXv]()
},
UHU: function (_) {
    var $ = this._editInput.value;
    this.setNodeText(this._editingNode, $);
    this[IXv]()
},
_getNodeByEvent: function (C) {
    if (Mjm(C.target, this.RWsQ))
        return null;
    var A = $Rz(C.target, this.Hq_);
    if (A) {
        var $ = A.id.split("$"),
			B = $[$.length - 1],
			_ = this.JqON[B];
        return _
    }
    return null
},
St7: function ($) {
    return this.uid + "$" + $._id
},
FZE: function ($) {
    return this.uid + "$nodes$" + $._id
},
MDBn: function ($) {
    return this.uid + "$check$" + $._id
},
addNodeCls: function ($, _) {
    var A = this._getNodeEl($);
    if (A)
        E$_(A, _)
},
removeNodeCls: function ($, _) {
    var A = this._getNodeEl($);
    if (A)
        ZVS(A, _)
},
getNodeBox: function (_) {
    var $ = this._getNodeEl(_);
    if ($)
        return L05($.firstChild)
},
_getNodeEl: function ($) {
    if (!$)
        return null;
    var _ = this.St7($);
    return document.getElementById(_)
},
Jve: function (_) {
    if (!_)
        return null;
    var $ = this.DEYR(_);
    if ($) {
        $ = mini.byClass(this.NDJK, $);
        return $
    }
    return null
},
DEYR: function (_) {
    var $ = this._getNodeEl(_);
    if ($)
        return $.firstChild
},
YHX: function ($) {
    if (!$)
        return null;
    var _ = this.FZE($);
    return document.getElementById(_)
},
Swtt: function ($) {
    if (!$)
        return null;
    var _ = this.MDBn($);
    return document.getElementById(_)
},
findNodes: function (A, $) {
    var _ = [];
    $ = $ || this;
    this.cascadeChild(this.root, function (B) {
        if (A && A[R05g]($, B) === true)
            _.push(B)
    }, this);
    return _
},
getNode: function ($) {
    if (typeof $ == "object")
        return $;
    return this._7A[$] || null
},
hideNode: function (_) {
    _ = this[Ook2](_);
    if (!_)
        return;
    _.visible = false;
    var $ = this._getNodeEl(_);
    $.style.display = "none"
},
showNode: function (_) {
    _ = this[Ook2](_);
    if (!_)
        return;
    _.visible = false;
    var $ = this._getNodeEl(_);
    $.style.display = ""
},
enableNode: function (A) {
    A = this[Ook2](A);
    if (!A)
        return;
    A.enabled = true;
    var _ = this._getNodeEl(A);
    ZVS(_, "mini-disabled");
    var $ = this.Swtt(A);
    if ($)
        $.disabled = false
},
disableNode: function (A) {
    A = this[Ook2](A);
    if (!A)
        return;
    A.enabled = false;
    var _ = this._getNodeEl(A);
    E$_(_, "mini-disabled");
    var $ = this.Swtt(A);
    if ($)
        $.disabled = true
},
_allowExpandLayout: true,
expandNode: function (E, B) {
    E = this[Ook2](E);
    if (!E)
        return;
    var $ = this.isExpandedNode(E);
    if ($)
        return;
    if (this.isLeaf(E))
        return;
    E.expanded = true;
    var F = this._getNodeEl(E);
    if (this.removeOnCollapse && F) {
        var G = this.Z7q$(E);
        jQuery(F).before(G);
        jQuery(F).remove()
    }
    var D = this.YHX(E);
    if (D)
        D.style.display = "";
    D = this._getNodeEl(E);
    if (D) {
        var I = D.firstChild;
        ZVS(I, this._s_);
        E$_(I, this.Lzj)
    }
    this.fire("expand", {
        node: E
    });
    B = B && !(mini.isIE6);
    if (B && this._getViewChildNodes(E)) {
        this.W0Y = true;
        D = this.YHX(E);
        if (!D)
            return;
        var C = Cop(D);
        D.style.height = "1px";
        if (this.JT2)
            D.style.position = "relative";
        var _ = {
            height: C + "px"
        },
			A = this,
			H = jQuery(D);
        H.animate(_, 180, function () {
            A.W0Y = false;
            A.Fuq();
            clearInterval(A.UrA);
            D.style.height = "auto";
            if (A.JT2)
                D.style.position = "static";
            mini[Smh](F)
        });
        clearInterval(this.UrA);
        this.UrA = setInterval(function () {
            A.Fuq()
        }, 60)
    }
    this.Fuq();
    if (this._allowExpandLayout)
        mini[Smh](this.el)
},
collapseNode: function (E, B) {
    E = this[Ook2](E);
    if (!E)
        return;
    var $ = this.isExpandedNode(E);
    if (!$)
        return;
    if (this.isLeaf(E))
        return;
    E.expanded = false;
    var F = this._getNodeEl(E),
		D = this.YHX(E);
    if (D)
        D.style.display = "none";
    D = this._getNodeEl(E);
    if (D) {
        var I = D.firstChild;
        ZVS(I, this.Lzj);
        E$_(I, this._s_)
    }
    this.fire("collapse", {
        node: E
    });
    B = B && !(mini.isIE6);
    if (B && this._getViewChildNodes(E)) {
        this.W0Y = true;
        D = this.YHX(E);
        if (!D)
            return;
        D.style.display = "";
        D.style.height = "auto";
        if (this.JT2)
            D.style.position = "relative";
        var C = Cop(D),
			_ = {
			    height: "1px"
			},
			A = this,
			H = jQuery(D);
        H.animate(_, 180, function () {
            D.style.display = "none";
            D.style.height = "auto";
            if (A.JT2)
                D.style.position = "static";
            A.W0Y = false;
            A.Fuq();
            clearInterval(A.UrA);
            var $ = A.YHX(E);
            if (A.removeOnCollapse && $)
                jQuery($).remove();
            mini[Smh](F)
        });
        clearInterval(this.UrA);
        this.UrA = setInterval(function () {
            A.Fuq()
        }, 60)
    } else {
        var G = this.YHX(E);
        if (this.removeOnCollapse && G)
            jQuery(G).remove()
    }
    this.Fuq();
    if (this._allowExpandLayout)
        mini[Smh](this.el)
},
toggleNode: function (_, $) {
    if (this.isExpandedNode(_))
        this[Hb3m](_, $);
    else
        this[KKj](_, $)
},
expandLevel: function ($) {
    this.cascadeChild(this.root, function (_) {
        if (this.getLevel(_) == $)
            if (_[this.nodesField] != null)
                this[KKj](_)
}, this)
},
collapseLevel: function ($) {
    this.cascadeChild(this.root, function (_) {
        if (this.getLevel(_) == $)
            if (_[this.nodesField] != null)
                this[Hb3m](_)
}, this)
},
expandAll: function () {
    this.cascadeChild(this.root, function ($) {
        if ($[this.nodesField] != null)
            this[KKj]($)
    }, this)
},
collapseAll: function () {
    this.cascadeChild(this.root, function ($) {
        if ($[this.nodesField] != null)
            this[Hb3m]($)
    }, this)
},
expandPath: function (A) {
    A = this[Ook2](A);
    if (!A)
        return;
    var _ = this[X3h](A);
    for (var $ = 0, B = _.length; $ < B; $++)
        this[KKj](_[$])
},
collapsePath: function (A) {
    A = this[Ook2](A);
    if (!A)
        return;
    var _ = this[X3h](A);
    for (var $ = 0, B = _.length; $ < B; $++)
        this[Hb3m](_[$])
},
selectNode: function (_) {
    _ = this[Ook2](_);
    var $ = this._getNodeEl(this.HWi1);
    if ($)
        ZVS($.firstChild, this.TT);
    this.HWi1 = _;
    $ = this._getNodeEl(this.HWi1);
    if ($)
        E$_($.firstChild, this.TT);
    var A = {
        node: _,
        isLeaf: this.isLeaf(_)
    };
    this.fire("nodeselect", A)
},
getSelectedNode: function () {
    return this.HWi1
},
getSelectedNodes: function () {
    var $ = [];
    if (this.HWi1)
        $.push(this.HWi1);
    return $
},
autoCheckParent: false,
setAutoCheckParent: function ($) {
    this.autoCheckParent = $
},
getAutoCheckParent: function ($) {
    return this.autoCheckParent
},
doAutoCheckParent: function (C) {
    var _ = this[X3h](C);
    for (var $ = 0, D = _.length; $ < D; $++) {
        var B = _[$],
			A = this.hasCheckedChildNode(B);
        B.checked = A;
        var E = this.Swtt(B);
        if (E) {
            E.indeterminate = false;
            E.checked = A
        }
    }
},
hasCheckedChildNode: function (_) {
    var A = false,
		D = this.getAllChildNodes(_);
    for (var $ = 0, C = D.length; $ < C; $++) {
        var B = D[$];
        if (this.isCheckedNode(B)) {
            A = true;
            break
        }
    }
    return A
},
_doCheckState: function (C) {
    var _ = this[X3h](C);
    _.push(C);
    for (var $ = 0, D = _.length; $ < D; $++) {
        var B = _[$],
			A = this.hasCheckedChildNode(B),
			E = this.Swtt(B);
        if (E) {
            E.indeterminate = false;
            if (this.isCheckedNode(B)) {
                E.indeterminate = false;
                E.checked = true
            } else {
                E.indeterminate = A;
                E.checked = false
            }
        }
    }
},
checkNode: function ($) {
    $ = this[Ook2]($);
    if (!$ || $.checked)
        return;
    $.checked = true;
    this._doCheckState($)
},
uncheckNode: function ($) {
    $ = this[Ook2]($);
    if (!$ || !$.checked)
        return;
    $.checked = false;
    this._doCheckState($)
},
checkNodes: function (B) {
    if (!mini.isArray(B))
        B = [];
    for (var $ = 0, A = B.length; $ < A; $++) {
        var _ = B[$];
        this.checkNode(_)
    }
},
uncheckNodes: function (B) {
    if (!mini.isArray(B))
        B = [];
    for (var $ = 0, A = B.length; $ < A; $++) {
        var _ = B[$];
        this.uncheckNode(_)
    }
},
checkAllNodes: function () {
    this.cascadeChild(this.root, function ($) {
        this.checkNode($)
    }, this)
},
uncheckAllNodes: function ($) {
    this.cascadeChild(this.root, function ($) {
        this.uncheckNode($)
    }, this)
},
getCheckedNodes: function () {
    var $ = [];
    this.cascadeChild(this.root, function (_) {
        if (_.checked == true)
            $.push(_)
    }, this);
    return $
},
setValue: function (_) {
    if (mini.isNull(_))
        _ = "";
    _ = String(_);
    if (this.getValue() != _) {
        var C = this.getCheckedNodes();
        this.uncheckNodes(C);
        this.value = _;
        var A = String(_).split(",");
        for (var $ = 0, B = A.length; $ < B; $++)
            this.checkNode(A[$])
    }
},
getNodesByValue: function (_) {
    if (mini.isNull(_))
        _ = "";
    _ = String(_);
    var D = [],
		A = String(_).split(",");
    for (var $ = 0, C = A.length; $ < C; $++) {
        var B = this[Ook2](A[$]);
        if (B)
            D.push(B)
    }
    return D
},
WDb0: function (A) {
    if (mini.isNull(A))
        A = [];
    if (!mini.isArray(A))
        A = this.getNodesByValue(A);
    var B = [],
		C = [];
    for (var _ = 0, D = A.length; _ < D; _++) {
        var $ = A[_];
        if ($) {
            B.push(this[T03]($));
            C.push(this[IC0]($))
        }
    }
    return [B.join(this.delimiter), C.join(this.delimiter)]
},
getValue: function () {
    var A = this.getCheckedNodes(),
		C = [];
    for (var $ = 0, _ = A.length; $ < _; $++) {
        var B = this[T03](A[$]);
        if (B)
            C.push(B)
    }
    return C.join(",")
},
setResultAsTree: function ($) {
    this[WFK] = $
},
getResultAsTree: function () {
    return this[WFK]
},
setParentField: function ($) {
    this[_v3e] = $
},
getParentField: function () {
    return this[_v3e]
},
setIdField: function ($) {
    this[XsI] = $
},
getIdField: function () {
    return this[XsI]
},
setTextField: function ($) {
    this[T2m] = $
},
getTextField: function () {
    return this[T2m]
},
setShowTreeLines: function ($) {
    this[_l3N] = $;
    if ($ == true)
        E$_(this.el, "mini-tree-treeLine");
    else
        ZVS(this.el, "mini-tree-treeLine")
},
getShowTreeLines: function () {
    return this[_l3N]
},
setShowArrow: function ($) {
    this.showArrow = $;
    if ($ == true)
        E$_(this.el, "mini-tree-showArrows");
    else
        ZVS(this.el, "mini-tree-showArrows")
},
getShowArrow: function () {
    return this.showArrow
},
setIconField: function ($) {
    this.iconField = $
},
getIconField: function () {
    return this.iconField
},
setNodesField: function ($) {
    this.nodesField = $
},
getNodesField: function () {
    return this.nodesField
},
setTreeColumn: function ($) {
    this.treeColumn = $
},
getTreeColumn: function () {
    return this.treeColumn
},
setLeafIcon: function ($) {
    this.leafIcon = $
},
getLeafIcon: function () {
    return this.leafIcon
},
setFolderIcon: function ($) {
    this.folderIcon = $
},
getFolderIcon: function () {
    return this.folderIcon
},
setExpandOnDblClick: function ($) {
    this.expandOnDblClick = $
},
getExpandOnDblClick: function () {
    return this.expandOnDblClick
},
setRemoveOnCollapse: function ($) {
    this.removeOnCollapse = $
},
getRemoveOnCollapse: function () {
    return this.removeOnCollapse
},
_89: function (B) {
    if (!this.enabled)
        return;
    if ($Rz(B.target, this.T$mk))
        return;
    var $ = this._getNodeByEvent(B);
    if ($)
        if ($Rz(B.target, this.NDJK)) {
            var _ = this.isExpandedNode($),
				A = {
				    node: $,
				    expanded: _,
				    cancel: false
				};
            if (this.expandOnDblClick && !this.W0Y)
                if (_) {
                    this.fire("beforecollapse", A);
                    if (A.cancel == true)
                        return;
                    this[Hb3m]($, this.allowAnim)
                } else {
                    this.fire("beforeexpand", A);
                    if (A.cancel == true)
                        return;
                    this[KKj]($, this.allowAnim)
                }
        this.fire("nodedblclick", {
            htmlEvent: B,
            node: $
        })
    }
},
Qtm: function (L) {
    if (!this.enabled)
        return;
    var B = this._getNodeByEvent(L);
    if (B)
        if ($Rz(L.target, this.Fipf) && this.isLeaf(B) == false) {
            if (this.W0Y)
                return;
            var I = this.isExpandedNode(B),
				K = {
				    node: B,
				    expanded: I,
				    cancel: false
				};
            if (!this.W0Y)
                if (I) {
                    this.fire("beforecollapse", K);
                    if (K.cancel == true)
                        return;
                    this[Hb3m](B, this.allowAnim)
                } else {
                    this.fire("beforeexpand", K);
                    if (K.cancel == true)
                        return;
                    this[KKj](B, this.allowAnim)
                }
    } else if ($Rz(L.target, this.T$mk)) {
        var J = this.isCheckedNode(B),
				K = {
				    isLeaf: this.isLeaf(B),
				    node: B,
				    checked: J,
				    checkRecursive: this.checkRecursive,
				    htmlEvent: L,
				    cancel: false
				};
        this.fire("beforenodecheck", K);
        if (K.cancel == true) {
            L.preventDefault();
            return
        }
        if (J)
            this.uncheckNode(B);
        else
            this.checkNode(B);
        if (K[Tj]) {
            this.cascadeChild(B, function ($) {
                if (J)
                    this.uncheckNode($);
                else
                    this.checkNode($)
            }, this);
            var $ = this[X3h](B);
            $.reverse();
            for (var G = 0, F = $.length; G < F; G++) {
                var C = $[G],
						A = this[SY0](C),
						H = true;
                for (var _ = 0, E = A.length; _ < E; _++) {
                    var D = A[_];
                    if (!this.isCheckedNode(D)) {
                        H = false;
                        break
                    }
                }
                if (H)
                    this.checkNode(C);
                else
                    this.uncheckNode(C)
            }
        }
        if (this.autoCheckParent)
            this.doAutoCheckParent(B);
        this.fire("nodecheck", K)
    } else
        this._OnNodeClick(B, L)
},
CgJ: function (_) {
    if (!this.enabled)
        return;
    var $ = this._getNodeByEvent(_);
    if ($)
        if ($Rz(_.target, this.Fipf));
        else if ($Rz(_.target, this.T$mk));
        else
            this._OnNodeMouseDown($, _)
},
_OnNodeMouseDown: function (_, $) {
    var B = $Rz($.target, this.NDJK);
    if (!B)
        return null;
    if (!this.isEnabledNode(_))
        return;
    var A = {
        node: _,
        cancel: false,
        isLeaf: this.isLeaf(_),
        htmlEvent: $
    };
    if (this[NQ] && _[NQ] !== false)
        if (this.HWi1 != _) {
            this.fire("beforenodeselect", A);
            if (A.cancel != true)
                this.selectNode(_)
        }
this.fire("nodeMouseDown", A)
},
_OnNodeClick: function (_, $) {
    var B = $Rz($.target, this.NDJK);
    if (!B)
        return null;
    if ($.target.tagName.toLowerCase() == "a")
        $.target.hideFocus = true;
    if (!this.isEnabledNode(_))
        return;
    var A = {
        node: _,
        cancel: false,
        isLeaf: this.isLeaf(_),
        htmlEvent: $
    };
    this.fire("nodeClick", A)
},
_jK: function (_) {
    var $ = this._getNodeByEvent(_);
    if ($)
        this._OnNodeMouseMove($, _)
},
S0ud: function (_) {
    var $ = this._getNodeByEvent(_);
    if ($)
        this._OnNodeMouseOut($, _)
},
_OnNodeMouseOut: function ($, _) {
    if (!this.isEnabledNode($))
        return;
    if (!$Rz(_.target, this.NDJK))
        return;
    this.blurNode();
    var _ = {
        node: $,
        htmlEvent: _
    };
    this.fire("nodemouseout", _)
},
_OnNodeMouseMove: function ($, _) {
    if (!this.isEnabledNode($))
        return;
    if (!$Rz(_.target, this.NDJK))
        return;
    if (this[JYw0] == true)
        this.focusNode($);
    var _ = {
        node: $,
        htmlEvent: _
    };
    this.fire("nodemousemove", _)
},
focusNode: function (A, $) {
    A = this[Ook2](A);
    if (!A)
        return;
    var _ = this.Jve(A);
    if ($ && _)
        this[Ls](A);
    if (this.Xve0 == A)
        return;
    this.blurNode();
    this.Xve0 = A;
    E$_(_, this.CHu)
},
blurNode: function () {
    if (!this.Xve0)
        return;
    var $ = this.Jve(this.Xve0);
    if ($)
        ZVS($, this.CHu);
    this.Xve0 = null
},
scrollIntoView: function (_) {
    var $ = this._getNodeEl(_);
    mini[Ls]($, this.el, false)
},
onNodeClick: function (_, $) {
    this.on("nodeClick", _, $)
},
onBeforeNodeSelect: function (_, $) {
    this.on("beforenodeselect", _, $)
},
onNodeSelect: function (_, $) {
    this.on("nodeselect", _, $)
},
onBeforeNodeCheck: function (_, $) {
    this.on("beforenodecheck", _, $)
},
onCheckNode: function (_, $) {
    this.on("nodecheck", _, $)
},
onNodeMouseDown: function (_, $) {
    this.on("nodemousedown", _, $)
},
onBeforeExpand: function (_, $) {
    this.on("beforeexpand", _, $)
},
onExpand: function (_, $) {
    this.on("expand", _, $)
},
onBeforeCollapse: function (_, $) {
    this.on("beforecollapse", _, $)
},
onCollapse: function (_, $) {
    this.on("collapse", _, $)
},
onBeforeLoad: function (_, $) {
    this.on("beforeload", _, $)
},
onLoad: function (_, $) {
    this.on("load", _, $)
},
onLoadError: function (_, $) {
    this.on("loaderror", _, $)
},
onDataLoad: function (_, $) {
    this.on("dataload", _, $)
},
BiL1Data: function () {
    return this.getSelectedNodes().clone()
},
BiL1Text: function ($) {
    return "Nodes " + $.length
},
allowDrag: false,
allowDrop: false,
dragGroupName: "",
dropGroupName: "",
setAllowDrag: function ($) {
    this.allowDrag = $
},
getAllowDrag: function () {
    return this.allowDrag
},
setAllowDrop: function ($) {
    this[Ysl] = $
},
getAllowDrop: function () {
    return this[Ysl]
},
setDragGroupName: function ($) {
    this[BOF] = $
},
getDragGroupName: function () {
    return this[BOF]
},
setDropGroupName: function ($) {
    this[COws] = $
},
getDropGroupName: function () {
    return this[COws]
},
isAllowDrag: function ($) {
    if (!this.allowDrag)
        return false;
    if ($.allowDrag === false)
        return false;
    var _ = this.IA($);
    return !_.cancel
},
IA: function ($) {
    var _ = {
        node: $,
        cancel: false
    };
    this.fire("DragStart", _);
    return _
},
JdY: function (_, $, A) {
    _ = _.clone();
    var B = {
        dragNodes: _,
        targetNode: $,
        action: A,
        cancel: false
    };
    this.fire("DragDrop", B);
    return B
},
Ds2: function (A, _, $) {
    var B = {};
    B.effect = A;
    B.nodes = _;
    B.targetNode = $;
    this.fire("GiveFeedback", B);
    return B
},
getAttrs: function (C) {
    var G = Yps7[Ov][RH][R05g](this, C);
    mini[A5ac](C, G, ["value", "url", "idField", "textField", "iconField", "nodesField", "parentField", "valueField", "leafIcon", "folderIcon", "ondrawnode", "onbeforenodeselect", "onnodeselect", "onnodemousedown", "onnodeclick", "onnodedblclick", "onbeforeload", "onload", "onloaderror", "ondataload", "onbeforenodecheck", "onnodecheck", "onbeforeexpand", "onexpand", "onbeforecollapse", "oncollapse", "dragGroupName", "dropGroupName", "expandOnLoad", "ajaxOption"]);
    mini[QRH](C, G, ["allowSelect", "showCheckBox", "showExpandButtons", "showTreeIcon", "showTreeLines", "checkRecursive", "enableHotTrack", "showFolderCheckBox", "resultAsTree", "allowDrag", "allowDrop", "showArrow", "expandOnDblClick", "removeOnCollapse", "autoCheckParent"]);
    if (G.ajaxOption)
        G.ajaxOption = mini.decode(G.ajaxOption);
    if (G.expandOnLoad) {
        var _ = parseInt(G.expandOnLoad);
        if (mini.isNumber(_))
            G.expandOnLoad = _;
        else
            G.expandOnLoad = G.expandOnLoad == "true" ? true : false
    }
    var E = G[XsI] || this[XsI],
		B = G[T2m] || this[T2m],
		F = G.iconField || this.iconField,
		A = G.nodesField || this.nodesField;
    function $(I) {
        var N = [];
        for (var L = 0, J = I.length; L < J; L++) {
            var D = I[L],
				H = mini[SY0](D),
				R = H[0],
				G = H[1];
            if (!R || !G)
                R = D;
            var C = jQuery(R),
				_ = {},
				K = _[E] = R.getAttribute("value");
            _[F] = C.attr("icon");
            _[B] = R.innerHTML;
            N.add(_);
            var P = C.attr("expanded");
            if (P)
                _.expanded = P == "false" ? false : true;
            var Q = C.attr("allowSelect");
            if (Q)
                _[NQ] = Q == "false" ? false : true;
            if (!G)
                continue;
            var O = mini[SY0](G),
				M = $(O);
            if (M.length > 0)
                _[A] = M
        }
        return N
    }
    var D = $(mini[SY0](C));
    if (D.length > 0)
        G.data = D;
    if (!G[XsI] && G[Dv])
        G[XsI] = G[Dv];
    return G
}
});
H58(Yps7, "tree");
Y6El = function ($) {
    this.owner = $;
    this.owner.on("NodeMouseDown", this.UlhW, this)
};
Y6El[M9NB] = {
    UlhW: function (B) {
        var A = B.node;
        if (B.htmlEvent.button == mini.MouseButton.Right)
            return;
        var _ = this.owner;
        if (_[DcOq]() || _.isAllowDrag(B.node) == false)
            return;
        if (_.isEditingNode(A))
            return;
        this.dragData = _.BiL1Data();
        if (this.dragData.indexOf(A) == -1)
            this.dragData.push(A);
        var $ = this.BiL1();
        $.start(B.htmlEvent)
    },
    IA: function ($) {
        var _ = this.owner;
        this.feedbackEl = mini.append(document.body, "<div class=\"mini-feedback\"></div>");
        this.feedbackEl.innerHTML = _.BiL1Text(this.dragData);
        this.lastFeedbackClass = "";
        this[JYw0] = _[JYw0];
        _.setEnableHotTrack(false)
    },
    _getDropTree: function (_) {
        var $ = $Rz(_.target, "mini-tree", 500);
        if ($)
            return mini.get($)
    },
    XIeJ: function (_) {
        var B = this.owner,
		A = this._getDropTree(_.event),
		D = _.now[0],
		C = _.now[1];
        mini[_20](this.feedbackEl, D + 15, C + 18);
        this.dragAction = "no";
        if (A) {
            var $ = A._getNodeByEvent(_.event);
            this.dropNode = $;
            if ($ && A[Ysl] == true) {
                if (!A.isLeaf($) && !$[A.nodesField])
                    A.loadNode($);
                this.dragAction = this.getFeedback($, C, 3, A)
            } else
                this.dragAction = "no";
            if (B && A && B != A && !$ && A[SY0](A.root).length == 0) {
                $ = A.getRootNode();
                this.dragAction = "add";
                this.dropNode = $
            }
        }
        this.lastFeedbackClass = "mini-feedback-" + this.dragAction;
        this.feedbackEl.className = "mini-feedback " + this.lastFeedbackClass;
        document.title = this.dragAction;
        if (this.dragAction == "no")
            $ = null;
        this.setRowFeedback($, this.dragAction, A)
    },
    $vRk: function (A) {
        var E = this.owner,
		C = this._getDropTree(A.event);
        mini[Gwl](this.feedbackEl);
        this.feedbackEl = null;
        this.setRowFeedback(null);
        var D = [];
        for (var H = 0, G = this.dragData.length; H < G; H++) {
            var J = this.dragData[H],
			B = false;
            for (var K = 0, _ = this.dragData.length; K < _; K++) {
                var F = this.dragData[K];
                if (F != J) {
                    B = E.isAncestor(F, J);
                    if (B)
                        break
                }
            }
            if (!B)
                D.push(J)
        }
        this.dragData = D;
        if (this.dropNode && this.dragAction != "no") {
            var L = E.JdY(this.dragData, this.dropNode, this.dragAction);
            if (!L.cancel) {
                var D = L.dragNodes,
				I = L.targetNode,
				$ = L.action;
                if (E == C)
                    E.moveNodes(D, I, $);
                else {
                    E.removeNodes(D);
                    C.addNodes(D, I, $)
                }
            }
        }
        this.dropNode = null;
        this.dragData = null;
        E.setEnableHotTrack(this[JYw0])
    },
    setRowFeedback: function (B, F, A) {
        if (this.lastAddDomNode)
            ZVS(this.lastAddDomNode, "mini-tree-feedback-add");
        if (B == null || this.dragAction == "add") {
            mini[Gwl](this.feedbackLine);
            this.feedbackLine = null
        }
        this.lastRowFeedback = B;
        if (B != null)
            if (F == "before" || F == "after") {
                if (!this.feedbackLine)
                    this.feedbackLine = mini.append(document.body, "<div class='mini-feedback-line'></div>");
                this.feedbackLine.style.display = "block";
                var D = A.getNodeBox(B),
				E = D.x,
				C = D.y - 1;
                if (F == "after")
                    C += D.height;
                mini[_20](this.feedbackLine, E, C);
                var _ = A.getBox(true);
                X9c(this.feedbackLine, _.width)
            } else {
                var $ = A.DEYR(B);
                E$_($, "mini-tree-feedback-add");
                this.lastAddDomNode = $
            }
},
getFeedback: function ($, I, F, A) {
    var J = A.getNodeBox($),
		_ = J.height,
		H = I - J.y,
		G = null;
    if (this.dragData.indexOf($) != -1)
        return "no";
    var C = false;
    if (F == 3) {
        C = A.isLeaf($);
        for (var E = 0, D = this.dragData.length; E < D; E++) {
            var K = this.dragData[E],
				B = A.isAncestor(K, $);
            if (B) {
                G = "no";
                break
            }
        }
    }
    if (G == null)
        if (C) {
            if (H > _ / 2)
                G = "after";
            else
                G = "before"
        } else if (H > (_ / 3) * 2)
            G = "after";
        else if (_ / 3 <= H && H <= (_ / 3 * 2))
            G = "add";
        else
            G = "before";
var L = A.Ds2(G, this.dragData, $);
return L.effect
},
BiL1: function () {
    if (!this.drag)
        this.drag = new mini.Drag({
            capture: false,
            onStart: mini.createDelegate(this.IA, this),
            onMove: mini.createDelegate(this.XIeJ, this),
            onStop: mini.createDelegate(this.$vRk, this)
        });
    return this.drag
}
};
MIZ = function () {
    this.data = [];
    this.R1k = {};
    this.MFS = [];
    this.O_ = {};
    this.columns = [];
    this.Ac = [];
    this.Ty0 = {};
    this.RoS = {};
    this.N2A = [];
    this.Xl6z = {};
    this._cellErrors = [];
    this._cellMapErrors = {};
    MIZ[Ov][FaWb][R05g](this);
    this[YaK]();
    var $ = this;
    setTimeout(function () {
        if ($.autoLoad)
            $.reload()
    }, 1)
};
Vmw = 0;
Yqn = 0;
ZPOi(MIZ, Jva, {
    QOA: "block",
    width: 300,
    height: "auto",
    allowCellValid: false,
    cellEditAction: "cellclick",
    showEmptyText: false,
    emptyText: "No data returned.",
    minWidth: 300,
    minHeight: 150,
    maxWidth: 5000,
    maxHeight: 3000,
    _viewRegion: null,
    _virtualRows: 50,
    virtualScroll: false,
    allowCellWrap: false,
    bodyCls: "",
    bodyStyle: "",
    footerCls: "",
    footerStyle: "",
    pagerCls: "",
    pagerStyle: "",
    idField: "id",
    data: [],
    columns: null,
    allowResize: false,
    selectOnLoad: false,
    _rowIdField: "_uid",
    columnWidth: 120,
    columnMinWidth: 20,
    columnMaxWidth: 2000,
    fitColumns: true,
    autoHideRowDetail: true,
    showHeader: true,
    showFooter: true,
    showTop: false,
    showHGridLines: true,
    showVGridLines: true,
    showFilterRow: false,
    showSummaryRow: false,
    sortMode: "server",
    allowSortColumn: true,
    allowMoveColumn: true,
    allowResizeColumn: true,
    enableHotTrack: true,
    allowRowSelect: true,
    multiSelect: false,
    allowAlternating: false,
    $lg: "mini-grid-row-alt",
    IGr1: "mini-grid-frozen",
    JNT: "mini-grid-frozenCell",
    frozenStartColumn: -1,
    frozenEndColumn: -1,
    isFrozen: function () {
        return this[WAq] >= 0 && this[M48] >= this[WAq]
    },
    KsE: "mini-grid-row",
    K54: "mini-grid-row-hover",
    BD: "mini-grid-row-selected",
    _headerCellCls: "mini-grid-headerCell",
    _cellCls: "mini-grid-cell",
    set: function ($) {
        var _ = $.columns;
        delete $.columns;
        MIZ[Ov].set[R05g](this, $);
        if (_)
            this[EaK](_);
        return this
    },
    uiCls: "mini-datagrid",
    _create: function () {
        var $ = this.el = document.createElement("div");
        this.el.className = "mini-grid";
        this.el.style.display = "block";
        var _ = "<div class=\"mini-grid-border\">" + "<div class=\"mini-grid-header\"><div class=\"mini-grid-headerInner\"></div></div>" + "<div class=\"mini-grid-filterRow\"></div>" + "<div class=\"mini-grid-body\"><div class=\"mini-grid-bodyInner\"></div><div class=\"mini-grid-body-scrollHeight\"></div></div>" + "<div class=\"mini-grid-scroller\"><div></div></div>" + "<div class=\"mini-grid-summaryRow\"></div>" + "<div class=\"mini-grid-footer\"></div>" + "<div class=\"mini-grid-resizeGrid\" style=\"\"></div>" + "<a href=\"#\" class=\"mini-grid-focus\" style=\"position:absolute;left:-10px;top:-10px;width:0px;height:0px;outline:none\" hideFocus onclick=\"return false\" ></a>" + "</div>";
        this.el.innerHTML = _;
        this.KDCb = this.el.firstChild;
        this.OW = this.KDCb.childNodes[0];
        this.Dzf = this.KDCb.childNodes[1];
        this.Jo4 = this.KDCb.childNodes[2];
        this._bodyInnerEl = this.Jo4.childNodes[0];
        this._bodyScrollEl = this.Jo4.childNodes[1];
        this._headerInnerEl = this.OW.firstChild;
        this.O0Sb = this.KDCb.childNodes[3];
        this.RpF$ = this.KDCb.childNodes[4];
        this.Tqf = this.KDCb.childNodes[5];
        this.WqN = this.KDCb.childNodes[6];
        this._focusEl = this.KDCb.childNodes[7];
        this.R3Y();
        this._L7Y();
        DaZ(this.Jo4, this.bodyStyle);
        E$_(this.Jo4, this.bodyCls);
        this.JkG();
        this.FlUFRows()
    },
    destroy: function ($) {
        if (this.Jo4) {
            mini[Y5P](this.Jo4);
            this.Jo4 = null
        }
        if (this.O0Sb) {
            mini[Y5P](this.O0Sb);
            this.O0Sb = null
        }
        this.KDCb = null;
        this.OW = null;
        this.Dzf = null;
        this.Jo4 = null;
        this.O0Sb = null;
        this.RpF$ = null;
        this.Tqf = null;
        this.WqN = null;
        MIZ[Ov][Yr3P][R05g](this, $)
    },
    _initEvents: function () {
        VMPY(function () {
            Boy(this.el, "click", this.Qtm, this);
            Boy(this.el, "dblclick", this._89, this);
            Boy(this.el, "mousedown", this.CgJ, this);
            Boy(this.el, "mouseup", this.JE, this);
            Boy(this.el, "mousemove", this._jK, this);
            Boy(this.el, "mouseover", this.QwgP, this);
            Boy(this.el, "mouseout", this.S0ud, this);
            Boy(this.el, "keydown", this.XiOq, this);
            Boy(this.el, "keyup", this.EZj, this);
            Boy(this.el, "contextmenu", this.ZN0, this);
            Boy(this.Jo4, "scroll", this.Cri, this);
            Boy(this.O0Sb, "scroll", this.Rjh, this);
            Boy(this.el, "mousewheel", this._Dr, this)
        }, this);
        this.JSdV = new Ca(this);
        this.L_m = new mini._ColumnSplitter(this);
        this._ColumnMove = new mini._ColumnMove(this);
        this.JPH = new Sf1J(this);
        this._CellTip = new mini._CellToolTip(this);
        this._Sort = new mini._GridSort(this)
    },
    FlUFRows: function () {
        this.WqN.style.display = this[MZ] ? "" : "none";
        this.Tqf.style.display = this[TaXk] ? "" : "none";
        this.RpF$.style.display = this[ODq] ? "" : "none";
        this.Dzf.style.display = this[Hk] ? "" : "none";
        this.OW.style.display = this.showHeader ? "" : "none"
    },
    focus: function () {
        try {
            var _ = this.getCurrent();
            if (_) {
                var $ = this.EFU(_);
                if ($) {
                    var A = L05($);
                    mini.setY(this._focusEl, A.top)
                }
            }
            this._focusEl.focus()
        } catch (B) { }

    },
    JkG: function () {
        this.pager = new K6v();
        this.pager[Tlr9](this.Tqf);
        this.bindPager(this.pager)
    },
    setPager: function ($) {
        if (typeof $ == "string") {
            var _ = X4g($);
            if (!_)
                return;
            mini.parse($);
            $ = mini.get($)
        }
        if ($)
            this.bindPager($)
    },
    bindPager: function ($) {
        $.on("pagechanged", this.AtsU, this);
        this.on("load", function (_) {
            $.update(this.pageIndex, this.pageSize, this[HoaN]);
            this.totalPage = $.totalPage
        }, this)
    },
    setIdField: function ($) {
        this[XsI] = $
    },
    getIdField: function () {
        return this[XsI]
    },
    setUrl: function ($) {
        this.url = $
    },
    getUrl: function ($) {
        return this.url
    },
    setAutoLoad: function ($) {
        this.autoLoad = $
    },
    getAutoLoad: function ($) {
        return this.autoLoad
    },
    _cZ: true,
    loadData: function (A) {
        if (!mini.isArray(A))
            A = [];
        this.data = A;
        if (this._cZ == true)
            this.O_ = {};
        this.MFS = [];
        this.R1k = {};
        this.N2A = [];
        this.Xl6z = {};
        this._cellErrors = [];
        this._cellMapErrors = {};
        for (var $ = 0, B = A.length; $ < B; $++) {
            var _ = A[$];
            _._uid = Vmw++;
            _._index = $;
            this.R1k[_._uid] = _
        }
        this[YaK]()
    },
    setData: function ($) {
        this[Aw]($)
    },
    getData: function () {
        return this.data.clone()
    },
    toArray: function () {
        return this.data.clone()
    },
    getRange: function (A, C) {
        if (A > C) {
            var D = A;
            A = C;
            C = D
        }
        var B = this.data,
		E = [];
        for (var _ = A, F = C; _ <= F; _++) {
            var $ = B[_];
            E.push($)
        }
        return E
    },
    selectRange: function ($, _) {
        if (!mini.isNumber($))
            $ = this.indexOf($);
        if (!mini.isNumber(_))
            _ = this.indexOf(_);
        if (mini.isNull($) || mini.isNull(_))
            return;
        var A = this.getRange($, _);
        this[_D](A)
    },
    getHeaderHeight: function () {
        return this.showHeader ? Cop(this.OW) : 0
    },
    getFooterHeight: function () {
        return this[TaXk] ? Cop(this.Tqf) : 0
    },
    getFilterRowHeight: function () {
        return this[Hk] ? Cop(this.Dzf) : 0
    },
    getSummaryRowHeight: function () {
        return this[ODq] ? Cop(this.RpF$) : 0
    },
    IB4: function () {
        return this[CAEr]() ? Cop(this.O0Sb) : 0
    },
    PdtG: function (F) {
        var A = F == "empty",
		B = 0;
        if (A && this.showEmptyText == false)
            B = 1;
        var H = "",
		D = this[DM]();
        if (A)
            H += "<tr style=\"height:" + B + "px\">";
        else if (isIE) {
            if (isIE6 || isIE7 || (isIE8 && !jQuery.boxModel) || (isIE9 && !jQuery.boxModel))
                H += "<tr style=\"display:none;\">";
            else
                H += "<tr >"
        } else
            H += "<tr style=\"height:" + B + "px\">";
        for (var $ = 0, E = D.length; $ < E; $++) {
            var C = D[$],
			_ = C.width,
			G = this.JnA(C) + "$" + F;
            H += "<td id=\"" + G + "\" style=\"padding:0;border:0;margin:0;height:" + B + "px;";
            if (C.width)
                H += "width:" + C.width;
            if ($ < this[WAq] || C.visible == false)
                H += ";display:none;";
            H += "\" ></td>"
        }
        H += "</tr>";
        return H
    },
    R3Y: function () {
        if (this.Dzf.firstChild)
            this.Dzf.removeChild(this.Dzf.firstChild);
        var B = this[CAEr](),
		C = this[DM](),
		F = [];
        F[F.length] = "<table class=\"mini-grid-table\" cellspacing=\"0\" cellpadding=\"0\">";
        F[F.length] = this.PdtG("filter");
        F[F.length] = "<tr >";
        for (var $ = 0, D = C.length; $ < D; $++) {
            var A = C[$],
			E = this.PP$(A);
            F[F.length] = "<td id=\"";
            F[F.length] = E;
            F[F.length] = "\" class=\"mini-grid-filterCell\" style=\"";
            if ((B && $ < this[WAq]) || A.visible == false || A._hide == true)
                F[F.length] = ";display:none;";
            F[F.length] = "\"><span class=\"mini-grid-hspace\"></span></td>"
        }
        F[F.length] = "</tr></table>";
        this.Dzf.innerHTML = F.join("");
        for ($ = 0, D = C.length; $ < D; $++) {
            A = C[$];
            if (A.filter) {
                var _ = this.getFilterCellEl($);
                A.filter[Tlr9](_)
            }
        }
    },
    _L7Y: function () {
        if (this.RpF$.firstChild)
            this.RpF$.removeChild(this.RpF$.firstChild);
        var A = this[CAEr](),
		B = this[DM](),
		E = [];
        E[E.length] = "<table class=\"mini-grid-table\" cellspacing=\"0\" cellpadding=\"0\">";
        E[E.length] = this.PdtG("summary");
        E[E.length] = "<tr >";
        for (var $ = 0, C = B.length; $ < C; $++) {
            var _ = B[$],
			D = this.M73(_);
            E[E.length] = "<td id=\"";
            E[E.length] = D;
            E[E.length] = "\" class=\"mini-grid-summaryCell\" style=\"";
            if ((A && $ < this[WAq]) || _.visible == false || _._hide == true)
                E[E.length] = ";display:none;";
            E[E.length] = "\"><span class=\"mini-grid-hspace\"></span></td>"
        }
        E[E.length] = "</tr></table>";
        this.RpF$.innerHTML = E.join("")
    },
    NIc: function (L) {
        L = L || "";
        var N = this[CAEr](),
		A = this.$ano(),
		G = this[DM](),
		H = G.length,
		F = [];
        F[F.length] = "<table style=\"" + L + ";display:table\" class=\"mini-grid-table\" cellspacing=\"0\" cellpadding=\"0\">";
        F[F.length] = this.PdtG("header");
        for (var M = 0, _ = A.length; M < _; M++) {
            var D = A[M];
            F[F.length] = "<tr >";
            for (var I = 0, E = D.length; I < E; I++) {
                var B = D[I],
				C = B.header;
                if (typeof C == "function")
                    C = C[R05g](this, B);
                if (mini.isNull(C) || C === "")
                    C = "&nbsp;";
                var J = this.JnA(B),
				$ = "";
                if (this.sortField == B.field)
                    $ = this.sortOrder == "asc" ? "mini-grid-asc" : "mini-grid-desc";
                F[F.length] = "<td id=\"";
                F[F.length] = J;
                F[F.length] = "\" class=\"mini-grid-headerCell " + $ + " " + (B.headerCls || "") + " ";
                if (I == H - 1)
                    F[F.length] = " mini-grid-last-column ";
                F[F.length] = "\" style=\"";
                var K = G.indexOf(B);
                if ((N && K != -1 && K < this[WAq]) || B.visible == false || B._hide == true)
                    F[F.length] = ";display:none;";
                if (B.columns && B.columns.length > 0 && B.colspan == 0)
                    F[F.length] = ";display:none;";
                if (B.headerStyle)
                    F[F.length] = B.headerStyle + ";";
                if (B.headerAlign)
                    F[F.length] = "text-align:" + B.headerAlign + ";";
                F[F.length] = "\" ";
                if (B.rowspan)
                    F[F.length] = "rowspan=\"" + B.rowspan + "\" ";
                if (B.colspan)
                    F[F.length] = "colspan=\"" + B.colspan + "\" ";
                F[F.length] = "><div class=\"mini-grid-cellInner\">";
                F[F.length] = C;
                if ($)
                    F[F.length] = "<span class=\"mini-grid-sortIcon\"></span>";
                F[F.length] = "</div>";
                F[F.length] = "</td>"
            }
            F[F.length] = "</tr>"
        }
        F[F.length] = "</table>";
        var O = F.join("");
        O = "<div class=\"mini-grid-header\">" + O + "</div>";
        this._headerInnerEl.innerHTML = F.join("");
        this.fire("refreshHeader")
    },
    _doUpdateBody: function () {
        var G = this[DM]();
        for (var N = 0, H = G.length; N < H; N++) {
            var F = G[N];
            delete F._hide
        }
        this.NIc();
        var Q = this.data,
		T = this.isVirtualScroll(),
		J = this._Lp(),
		M = [],
		R = this[Rlg](),
		C = 0;
        if (T)
            C = J.top;
        if (R)
            M[M.length] = "<table class=\"mini-grid-table\" cellspacing=\"0\" cellpadding=\"0\">";
        else
            M[M.length] = "<table style=\"position:absolute;top:" + C + "px;left:0;\" class=\"mini-grid-table\" cellspacing=\"0\" cellpadding=\"0\">";
        M[M.length] = this.PdtG("body");
        if (Q.length > 0) {
            if (this[EfN]()) {
                var O = this.XY();
                for (var S = 0, A = O.length; S < A; S++) {
                    var _ = O[S],
					L = this.uid + "$group$" + _.id,
					U = this.XB5(_);
                    M[M.length] = "<tr id=\"" + L + "\" class=\"mini-grid-groupRow\"><td class=\"mini-grid-groupCell\" colspan=\"" + G.length + "\"><div class=\"mini-grid-groupHeader\">";
                    M[M.length] = "<div class=\"mini-grid-group-ecicon\"></div>";
                    M[M.length] = "<div class=\"mini-grid-groupTitle\">" + U.cellHtml + "</div>";
                    M[M.length] = "</div></td></tr>";
                    var B = _.rows;
                    for (N = 0, H = B.length; N < H; N++) {
                        var P = B[N];
                        this.Bqi(P, M, N)
                    }
                    if (this.showGroupSummary);
                }
            } else if (T) {
                var D = J.start,
				E = J.end;
                for (N = D, H = E; N < H; N++) {
                    P = Q[N];
                    this.Bqi(P, M, N)
                }
            } else
                for (N = 0, H = Q.length; N < H; N++) {
                    P = Q[N];
                    this.Bqi(P, M, N)
                }
        } else {
            M[M.length] = this.PdtG("empty");
            if (this.showEmptyText)
                M[M.length] = "<tr><td class=\"mini-grid-emptyText\" colspan=\"50\">" + this[_wQ] + "</td></tr>"
        }
        M[M.length] = "</table>";
        if (this._bodyInnerEl.firstChild)
            this._bodyInnerEl.removeChild(this._bodyInnerEl.firstChild);
        this._bodyInnerEl.innerHTML = M.join("");
        if (T) {
            this._rowHeight = 23;
            try {
                var $ = this._bodyInnerEl.firstChild.rows[1];
                if ($)
                    this._rowHeight = $.offsetHeight
            } catch (I) { }

            var K = this._rowHeight * this.data.length;
            this._bodyScrollEl.style.display = "block";
            this._bodyScrollEl.style.height = K + "px"
        } else
            this._bodyScrollEl.style.display = "none"
    },
    Bqi: function (F, D, P) {
        if (!mini.isNumber(P))
            P = this.data.indexOf(F);
        var L = P == this.data.length - 1,
		N = this[CAEr](),
		O = !D;
        if (!D)
            D = [];
        var A = this[DM](),
		G = -1,
		I = " ",
		E = -1,
		J = " ";
        D[D.length] = "<tr id=\"";
        D[D.length] = this.P8L(F);
        D[D.length] = "\" class=\"mini-grid-row ";
        if (this[CTG$](F)) {
            D[D.length] = this.BD;
            D[D.length] = " "
        }
        if (F._state == "deleted")
            D[D.length] = "mini-grid-deleteRow ";
        if (F._state == "added")
            D[D.length] = "mini-grid-newRow ";
        if (this[EcIc] && P % 2 == 1) {
            D[D.length] = this.$lg;
            D[D.length] = " "
        }
        G = D.length;
        D[D.length] = I;
        D[D.length] = "\" style=\"";
        E = D.length;
        D[D.length] = J;
        D[D.length] = "\">";
        var H = A.length - 1;
        for (var K = 0, $ = H; K <= $; K++) {
            var _ = A[K],
			M = _.field ? this.XsBI(F, _.field) : false,
			B = this.getCellError(F, _),
			Q = this.QY8(F, _, P, K),
			C = this._K(F, _);
            D[D.length] = "<td id=\"";
            D[D.length] = C;
            D[D.length] = "\" class=\"mini-grid-cell ";
            if (Q.cellCls)
                D[D.length] = Q.cellCls;
            if (B)
                D[D.length] = " mini-grid-cell-error ";
            if (this.Ms12 && this.Ms12[0] == F && this.Ms12[1] == _) {
                D[D.length] = " ";
                D[D.length] = this.P$jo
            }
            if (L)
                D[D.length] = " mini-grid-last-row ";
            if (K == H)
                D[D.length] = " mini-grid-last-column ";
            if (N && this[WAq] <= K && K <= this[M48]) {
                D[D.length] = " ";
                D[D.length] = this.JNT + " "
            }
            D[D.length] = "\" style=\"";
            if (_.align) {
                D[D.length] = "text-align:";
                D[D.length] = _.align;
                D[D.length] = ";"
            }
            if (Q.allowCellWrap)
                D[D.length] = "white-space:normal;text-overflow:normal;word-break:normal;";
            if (Q.cellStyle) {
                D[D.length] = Q.cellStyle;
                D[D.length] = ";"
            }
            if (N && K < this[WAq] || _.visible == false)
                D[D.length] = "display:none;";
            D[D.length] = "\">";
            if (M)
                D[D.length] = "<div class=\"mini-grid-cell-inner mini-grid-cell-dirty\">";
            D[D.length] = Q.cellHtml;
            if (M)
                D[D.length] = "</div>";
            D[D.length] = "</td>";
            if (Q.rowCls)
                I = Q.rowCls;
            if (Q.rowStyle)
                J = Q.rowStyle
        }
        D[G] = I;
        D[E] = J;
        D[D.length] = "</tr>";
        if (O)
            return D.join("")
    },
    isVirtualScroll: function () {
        return this.virtualScroll && this[Rlg]() == false && this[EfN]() == false
    },
    getScrollLeft: function () {
        return this[CAEr]() ? this.O0Sb.scrollLeft : this.Jo4.scrollLeft
    },
    doUpdate: function () {
        var $ = new Date();
        if (this.QYky === false)
            return;
        if (this[Rlg]() == true)
            this[UAC]("mini-grid-auto");
        else
            this[X9GT]("mini-grid-auto");
        this._doUpdateBody();
        if (this.isVirtualScroll());
        if (this[CAEr]())
            this.Rjh();
        this[SA]()
    },
    UqVs: function () {
        if (isIE) {
            this.KDCb.style.display = "none";
            h = this[UT](true);
            w = this[QRh](true);
            this.KDCb.style.display = ""
        }
    },
    $A: function () {
        this[SA]()
    },
    doLayout: function () {
        if (!this.canLayout())
            return;
        this._headerInnerEl.scrollLeft = this.Jo4.scrollLeft;
        var K = new Date(),
		M = this[CAEr](),
		J = this._headerInnerEl.firstChild,
		C = this._bodyInnerEl.firstChild,
		G = this.Dzf.firstChild,
		$ = this.RpF$.firstChild,
		L = this[Rlg]();
        h = this[UT](true);
        B = this[QRh](true);
        var I = B;
        if (I < 17)
            I = 17;
        if (h < 0)
            h = 0;
        var H = I,
		_ = 2000;
        if (!L) {
            h = h - this[Ald]() - this[VA5]() - this[DTU]() - this.getSummaryRowHeight() - this.IB4();
            if (h < 0)
                h = 0;
            this.Jo4.style.height = h + "px";
            _ = h
        } else
            this.Jo4.style.height = "auto";
        var D = this.Jo4.scrollHeight,
		F = this.Jo4.clientHeight,
		A = jQuery(this.Jo4).css("overflow-y") == "hidden";
        if (this.fitColumns) {
            if (A || F >= D) {
                var B = H + "px";
                J.style.width = B;
                C.style.width = B;
                G.style.width = B;
                $.style.width = B
            } else {
                B = parseInt(H - 17);
                if (B < 0)
                    B = 0;
                B = B + "px";
                J.style.width = B;
                C.style.width = B;
                G.style.width = B;
                $.style.width = B
            }
            if (L)
                if (H >= this.Jo4.scrollWidth)
                    this.Jo4.style.height = "auto";
                else
                    this.Jo4.style.height = (C.offsetHeight + 17) + "px";
            if (L && M)
                this.Jo4.style.height = "auto"
        } else {
            J.style.width = C.style.width = "0px";
            G.style.width = $.style.width = "0px"
        }
        if (this.fitColumns) {
            if (!A && F < D) {
                this._headerInnerEl.style.width = (I - 17) + "px";
                this.Dzf.style.width = (I - 17) + "px";
                this.RpF$.style.width = (I - 17) + "px"
            } else {
                this._headerInnerEl.style.width = "100%";
                this.Dzf.style.width = "100%";
                this.RpF$.style.width = "100%";
                this.Tqf.style.width = "auto"
            }
        } else {
            this._headerInnerEl.style.width = "100%";
            this.Dzf.style.width = "100%";
            this.RpF$.style.width = "100%";
            this.Tqf.style.width = "auto"
        }
        if (this[CAEr]()) {
            if (!A && F < this.Jo4.scrollHeight)
                this.O0Sb.style.width = (I - 17) + "px";
            else
                this.O0Sb.style.width = (I) + "px";
            if (this.Jo4.offsetWidth < C.offsetWidth) {
                this.O0Sb.firstChild.style.width = this.Apm() + "px";
                J.style.width = C.style.width = "0px";
                G.style.width = $.style.width = "0px"
            } else
                this.O0Sb.firstChild.style.width = "0px"
        }
        if (this.data.length == 0)
            this._doInnerLayout();
        else {
            var E = this;
            if (!this._innerLayoutTimer)
                this._innerLayoutTimer = setTimeout(function () {
                    E._doInnerLayout();
                    E._innerLayoutTimer = null
                }, 10)
        }
        this.fire("layout")
    },
    _doInnerLayout: function () {
        this.LIjm();
        this.TwI();
        mini.layout(this.Dzf);
        mini.layout(this.RpF$);
        mini.layout(this.Tqf);
        mini[Smh](this.el);
        this._doLayouted = true
    },
    setFitColumns: function ($) {
        this.fitColumns = $;
        if (this.fitColumns)
            ZVS(this.el, "mini-grid-fixcolumns");
        else
            E$_(this.el, "mini-grid-fixcolumns");
        this[SA]()
    },
    getFitColumns: function ($) {
        return this.fitColumns
    },
    Apm: function () {
        if (this.Jo4.offsetWidth < this._bodyInnerEl.firstChild.offsetWidth) {
            var _ = 0,
			B = this[DM]();
            for (var $ = 0, C = B.length; $ < C; $++) {
                var A = B[$];
                _ += this[JH9](A)
            }
            return _
        } else
            return 0
    },
    P8L: function ($) {
        return this.uid + "$" + $._uid
    },
    _K: function ($, _) {
        return this.uid + "$" + $._uid + "$" + _._id
    },
    PP$: function ($) {
        return this.uid + "$filter$" + $._id
    },
    M73: function ($) {
        return this.uid + "$summary$" + $._id
    },
    SIh: function ($) {
        return this.uid + "$detail$" + $._uid
    },
    _getHeaderScrollEl: function () {
        return this._headerInnerEl
    },
    getFilterCellEl: function ($) {
        $ = this[Ul]($);
        if (!$)
            return null;
        return document.getElementById(this.PP$($))
    },
    getSummaryCellEl: function ($) {
        $ = this[Ul]($);
        if (!$)
            return null;
        return document.getElementById(this.M73($))
    },
    EFU: function ($) {
        $ = this[VK]($);
        if (!$)
            return null;
        return document.getElementById(this.P8L($))
    },
    getCellBox: function (_, A) {
        _ = this[VK](_);
        A = this[Ul](A);
        if (!_ || !A)
            return null;
        var $ = this.Bv(_, A);
        if (!$)
            return null;
        return L05($)
    },
    getRowBox: function (_) {
        var $ = this.EFU(_);
        if ($)
            return L05($);
        return null
    },
    getRowsBox: function () {
        var G = [],
		C = this.data,
		B = 0;
        for (var _ = 0, E = C.length; _ < E; _++) {
            var A = C[_],
			F = this.P8L(A),
			$ = document.getElementById(F);
            if ($) {
                var D = $.offsetHeight;
                G[_] = {
                    top: B,
                    height: D,
                    bottom: B + D
                };
                B += D
            }
        }
        return G
    },
    setColumnWidth: function (E, B) {
        E = this[Ul](E);
        if (!E)
            return;
        if (mini.isNumber(B))
            B += "px";
        E.width = B;
        var _ = this.JnA(E) + "$header",
		F = this.JnA(E) + "$body",
		A = this.JnA(E) + "$filter",
		D = this.JnA(E) + "$summary",
		C = document.getElementById(_),
		$ = document.getElementById(F),
		G = document.getElementById(A),
		H = document.getElementById(D);
        if (C)
            C.style.width = B;
        if ($)
            $.style.width = B;
        if (G)
            G.style.width = B;
        if (H)
            H.style.width = B;
        this[SA]()
    },
    getColumnWidth: function (B) {
        B = this[Ul](B);
        if (!B)
            return 0;
        if (B.visible == false)
            return 0;
        var _ = 0,
		C = this.JnA(B) + "$body",
		A = document.getElementById(C);
        if (A) {
            var $ = A.style.display;
            A.style.display = "";
            _ = EvDb(A);
            A.style.display = $
        }
        return _
    },
    BU8: function (C, N) {
        var I = document.getElementById(this.JnA(C));
        if (I)
            I.style.display = N ? "" : "none";
        var D = document.getElementById(this.PP$(C));
        if (D)
            D.style.display = N ? "" : "none";
        var _ = document.getElementById(this.M73(C));
        if (_)
            _.style.display = N ? "" : "none";
        var J = this.JnA(C) + "$header",
		M = this.JnA(C) + "$body",
		B = this.JnA(C) + "$filter",
		E = this.JnA(C) + "$summary",
		L = document.getElementById(J);
        if (L)
            L.style.display = N ? "" : "none";
        var O = document.getElementById(B);
        if (O)
            O.style.display = N ? "" : "none";
        var P = document.getElementById(E);
        if (P)
            P.style.display = N ? "" : "none";
        if ($) {
            if (N && $.style.display == "")
                return;
            if (!N && $.style.display == "none")
                return
        }
        var $ = document.getElementById(M);
        if ($)
            $.style.display = N ? "" : "none";
        for (var H = 0, F = this.data.length; H < F; H++) {
            var K = this.data[H],
			G = this._K(K, C),
			A = document.getElementById(G);
            if (A)
                A.style.display = N ? "" : "none"
        }
    },
    Jj6: function (C, D, B) {
        for (var $ = 0, E = this.data.length; $ < E; $++) {
            var A = this.data[$],
			F = this._K(A, C),
			_ = document.getElementById(F);
            if (_)
                if (B)
                    E$_(_, D);
                else
                    ZVS(_, D)
        }
    },
    _DjM: function () {
        var C = this[CAEr]();
        if (C)
            E$_(this.el, this.IGr1);
        else
            ZVS(this.el, this.IGr1);
        var D = this[DM](),
		_ = this.Dzf.firstChild,
		$ = this.RpF$.firstChild;
        if (C) {
            _.style.height = jQuery(_).outerHeight() + "px";
            $.style.height = jQuery($).outerHeight() + "px"
        } else {
            _.style.height = "auto";
            $.style.height = "auto"
        }
        if (this[CAEr]()) {
            for (var A = 0, E = D.length; A < E; A++) {
                var B = D[A];
                if (this[WAq] <= A && A <= this[M48])
                    this.Jj6(B, this.JNT, true)
            }
            this.UHEQ(true)
        } else {
            for (A = 0, E = D.length; A < E; A++) {
                B = D[A];
                delete B._hide;
                if (B.visible)
                    this.BU8(B, true);
                this.Jj6(B, this.JNT, false)
            }
            this.NIc();
            this.UHEQ(false)
        }
        this[SA]();
        this.O0Sb.scrollLeft = this._headerInnerEl.scrollLeft = this.Jo4.scrollLeft = 0;
        this.UqVs()
    },
    _deferFrozen: function () {
        this._headerTableHeight = Cop(this._headerInnerEl.firstChild);
        var $ = this;
        if (this._deferFrozenTimer)
            clearTimeout(this._deferFrozenTimer);
        this._deferFrozenTimer = setTimeout(function () {
            $._DjM()
        }, 1)
    },
    setFrozenStartColumn: function ($) {
        var _ = new Date();
        $ = parseInt($);
        if (isNaN($))
            return;
        this[WAq] = $;
        this._deferFrozen()
    },
    getFrozenStartColumn: function () {
        return this[WAq]
    },
    setFrozenEndColumn: function ($) {
        $ = parseInt($);
        if (isNaN($))
            return;
        this[M48] = $;
        this._deferFrozen()
    },
    getFrozenEndColumn: function () {
        return this[M48]
    },
    unFrozenColumns: function () {
        this[TUf](-1);
        this[_T](-1)
    },
    frozenColumns: function ($, _) {
        this[OyL]();
        this[TUf]($);
        this[_T](_)
    },
    _rowHeight: 23,
    _Lp: function () {
        var E = this._getViewNowRegion(),
		D = this._rowHeight,
		G = this.Jo4.scrollTop,
		A = E.start,
		B = E.end;
        for (var $ = 0, F = this.data.length; $ < F; $ += this._virtualRows) {
            var C = $ + this._virtualRows;
            if ($ <= A && A < C)
                A = $;
            if ($ < B && B <= C)
                B = C
        }
        if (B > this.data.length)
            B = this.data.length;
        var _ = A * D;
        this._viewRegion = {
            start: A,
            end: B,
            top: _
        };
        return this._viewRegion
    },
    _getViewNowRegion: function () {
        var B = this._rowHeight,
		D = this.Jo4.scrollTop,
		$ = this.Jo4.offsetHeight,
		C = parseInt(D / B),
		_ = parseInt((D + $) / B) + 1,
		A = {
		    start: C,
		    end: _
		};
        return A
    },
    _canVirtualUpdate: function () {
        if (!this._viewRegion)
            return true;
        var $ = this._getViewNowRegion();
        if (this._viewRegion.start <= $.start && $.end <= this._viewRegion.end)
            return false;
        return true
    },
    _tryUpdateScroll: function () {
        var $ = this._canVirtualUpdate();
        if ($)
            this[YaK]()
    },
    Cri: function (_) {
        if (this[CAEr]())
            return;
        this.Dzf.scrollLeft = this.RpF$.scrollLeft = this._headerInnerEl.scrollLeft = this.Jo4.scrollLeft;
        var $ = this;
        setTimeout(function () {
            $._headerInnerEl.scrollLeft = $.Jo4.scrollLeft
        }, 10);
        if (this.isVirtualScroll()) {
            $ = this;
            if (this._scrollTopTimer)
                clearTimeout(this._scrollTopTimer);
            this._scrollTopTimer = setTimeout(function () {
                $._scrollTopTimer = null;
                $._tryUpdateScroll()
            }, 100)
        }
    },
    Rjh: function (_) {
        var $ = this;
        if (this._HScrollTimer)
            return;
        this._HScrollTimer = setTimeout(function () {
            $._doScrollFrozen();
            $._HScrollTimer = null
        }, 30)
    },
    _doScrollFrozen: function () {
        if (!this[CAEr]())
            return;
        var F = this[DM](),
		H = this.O0Sb.scrollLeft,
		$ = this[M48],
		C = 0;
        for (var _ = $ + 1, G = F.length; _ < G; _++) {
            var D = F[_];
            if (!D.visible)
                continue;
            var A = this[JH9](D);
            if (H <= C)
                break;
            $ = _;
            C += A
        }
        if (this._lastStartColumn === $)
            return;
        this._lastStartColumn = $;
        for (_ = 0, G = F.length; _ < G; _++) {
            D = F[_];
            delete D._hide;
            if (this[M48] < _ && _ <= $)
                D._hide = true
        }
        for (_ = 0, G = F.length; _ < G; _++) {
            D = F[_];
            if (_ < this.frozenStartColumn || (_ > this[M48] && _ < $))
                this.BU8(D, false);
            else
                this.BU8(D, true)
        }
        var E = "width:100%;";
        if (this.O0Sb.offsetWidth < this.O0Sb.scrollWidth || !this.fitColumns)
            E = "width:0px";
        this.NIc(E);
        var B = this._headerTableHeight;
        if (mini.isIE9)
            B -= 1;
        G2Mf(this._headerInnerEl.firstChild, B);
        for (_ = this[M48] + 1, G = F.length; _ < G; _++) {
            D = F[_];
            if (!D.visible)
                continue;
            if (_ <= $)
                this.BU8(D, false);
            else
                this.BU8(D, true)
        }
        this.Is90();
        this.fire("layout")
    },
    UHEQ: function (B) {
        var D = this.data;
        for (var _ = 0, E = D.length; _ < E; _++) {
            var A = D[_],
			$ = this.EFU(A);
            if ($)
                if (B) {
                    var C = 0;
                    $.style.height = C + "px"
                } else
                    $.style.height = ""
            }
        },
        _doGridLines: function () {
            if (this[Qp])
                ZVS(this.el, "mini-grid-hideVLine");
            else
                E$_(this.el, "mini-grid-hideVLine");
            if (this[V6])
                ZVS(this.el, "mini-grid-hideHLine");
            else
                E$_(this.el, "mini-grid-hideHLine")
        },
        setShowHGridLines: function ($) {
            if (this[V6] != $) {
                this[V6] = $;
                this._doGridLines();
                this[SA]()
            }
        },
        getShowHGridLines: function () {
            return this[V6]
        },
        setShowVGridLines: function ($) {
            if (this[Qp] != $) {
                this[Qp] = $;
                this._doGridLines();
                this[SA]()
            }
        },
        getShowVGridLines: function () {
            return this[Qp]
        },
        setShowFilterRow: function ($) {
            if (this[Hk] != $) {
                this[Hk] = $;
                this.FlUFRows();
                this[SA]()
            }
        },
        getShowFilterRow: function () {
            return this[Hk]
        },
        setShowSummaryRow: function ($) {
            if (this[ODq] != $) {
                this[ODq] = $;
                this.FlUFRows();
                this[SA]()
            }
        },
        getShowSummaryRow: function () {
            return this[ODq]
        },
        WUn: function () {
            if (this[EcIc] == false)
                return;
            var B = this.data;
            for (var _ = 0, C = B.length; _ < C; _++) {
                var A = B[_],
			$ = this.EFU(A);
                if ($)
                    if (this[EcIc] && _ % 2 == 1)
                        E$_($, this.$lg);
                    else
                        ZVS($, this.$lg)
            }
        },
        setAllowAlternating: function ($) {
            if (this[EcIc] != $) {
                this[EcIc] = $;
                this.WUn()
            }
        },
        getAllowAlternating: function () {
            return this[EcIc]
        },
        setEnableHotTrack: function ($) {
            if (this[JYw0] != $)
                this[JYw0] = $
        },
        getEnableHotTrack: function () {
            return this[JYw0]
        },
        setShowLoading: function ($) {
            this.showLoading = $
        },
        setAllowCellWrap: function ($) {
            if (this.allowCellWrap != $)
                this.allowCellWrap = $
        },
        getAllowCellWrap: function () {
            return this.allowCellWrap
        },
        setVirtualScroll: function ($) {
            if (this.virtualScroll != $)
                this.virtualScroll = $
        },
        getVirtualScroll: function () {
            return this.virtualScroll
        },
        setScrollTop: function ($) {
            this.scrollTop = $;
            this.Jo4.scrollTop = $
        },
        getScrollTop: function () {
            return this.Jo4.scrollTop
        },
        setBodyStyle: function ($) {
            this.bodyStyle = $;
            DaZ(this.Jo4, $)
        },
        getBodyStyle: function () {
            return this.bodyStyle
        },
        setBodyCls: function ($) {
            this.bodyCls = $;
            E$_(this.Jo4, $)
        },
        getBodyCls: function () {
            return this.bodyCls
        },
        setFooterStyle: function ($) {
            this.footerStyle = $;
            DaZ(this.Tqf, $)
        },
        getFooterStyle: function () {
            return this.footerStyle
        },
        setFooterCls: function ($) {
            this.footerCls = $;
            E$_(this.Tqf, $)
        },
        getFooterCls: function () {
            return this.footerCls
        },
        setShowHeader: function ($) {
            this.showHeader = $;
            this.FlUFRows();
            this[SA]()
        },
        setShowFooter: function ($) {
            this[TaXk] = $;
            this.FlUFRows();
            this[SA]()
        },
        setAutoHideRowDetail: function ($) {
            this.autoHideRowDetail = $
        },
        setSortMode: function ($) {
            this.sortMode = $
        },
        getSortMode: function () {
            return this.sortMode
        },
        setAllowSortColumn: function ($) {
            this[YYKG] = $
        },
        getAllowSortColumn: function () {
            return this[YYKG]
        },
        setAllowMoveColumn: function ($) {
            this[Rk] = $
        },
        getAllowMoveColumn: function () {
            return this[Rk]
        },
        setAllowResizeColumn: function ($) {
            this[AB] = $
        },
        getAllowResizeColumn: function () {
            return this[AB]
        },
        setSelectOnLoad: function ($) {
            this.selectOnLoad = $
        },
        getSelectOnLoad: function () {
            return this.selectOnLoad
        },
        setAllowResize: function ($) {
            this[MZ] = $;
            this.WqN.style.display = this[MZ] ? "" : "none"
        },
        getAllowResize: function () {
            return this[MZ]
        },
        setShowEmptyText: function ($) {
            this.showEmptyText = $
        },
        getShowEmptyText: function () {
            return this.showEmptyText
        },
        setEmptyText: function ($) {
            this[_wQ] = $
        },
        getEmptyText: function () {
            return this[_wQ]
        },
        setCellEditAction: function ($) {
            this.cellEditAction = $
        },
        getCellEditAction: function () {
            return this.cellEditAction
        },
        setAllowCellValid: function ($) {
            this.allowCellValid = $
        },
        getAllowCellValid: function () {
            return this.allowCellValid
        },
        _XgLp: true,
        showAllRowDetail: function () {
            this._XgLp = false;
            for (var $ = 0, A = this.data.length; $ < A; $++) {
                var _ = this.data[$];
                this[$CN](_)
            }
            this._XgLp = true;
            this[SA]()
        },
        hideAllRowDetail: function () {
            this._XgLp = false;
            for (var $ = 0, A = this.data.length; $ < A; $++) {
                var _ = this.data[$];
                if (this[_23](_))
                    this[Dr](_)
            }
            this._XgLp = true;
            this[SA]()
        },
        showRowDetail: function (_) {
            _ = this[VK](_);
            if (!_)
                return;
            var B = this[TJ](_);
            B.style.display = "";
            _._showDetail = true;
            var $ = this.EFU(_);
            E$_($, "mini-grid-expandRow");
            this.fire("showrowdetail", {
                record: _
            });
            if (this._XgLp)
                this[SA]();
            var A = this
        },
        hideRowDetail: function (_) {
            var B = this.SIh(_),
		A = document.getElementById(B);
            if (A)
                A.style.display = "none";
            delete _._showDetail;
            var $ = this.EFU(_);
            ZVS($, "mini-grid-expandRow");
            this.fire("hiderowdetail", {
                record: _
            });
            if (this._XgLp)
                this[SA]()
        },
        toggleRowDetail: function ($) {
            $ = this[VK]($);
            if (!$)
                return;
            if (grid[_23]($))
                grid[Dr]($);
            else
                grid[$CN]($)
        },
        isShowRowDetail: function ($) {
            $ = this[VK]($);
            if (!$)
                return false;
            return !!$._showDetail
        },
        getRowDetailEl: function ($) {
            $ = this[VK]($);
            if (!$)
                return null;
            var A = this.SIh($),
		_ = document.getElementById(A);
            if (!_)
                _ = this.AKs2($);
            return _
        },
        getRowDetailCellEl: function ($) {
            var _ = this[TJ]($);
            if (_)
                return _.cells[0]
        },
        AKs2: function ($) {
            var A = this.EFU($),
		B = this.SIh($),
		_ = this[DM]().length;
            jQuery(A).after("<tr id=\"" + B + "\" class=\"mini-grid-detailRow\"><td class=\"mini-grid-detailCell\" colspan=\"" + _ + "\"></td></tr>");
            this.Is90();
            return document.getElementById(B)
        },
        W9q: function () {
            var D = this._bodyInnerEl.firstChild.getElementsByTagName("tr")[0],
		B = D.getElementsByTagName("td"),
		A = 0;
            for (var _ = 0, C = B.length; _ < C; _++) {
                var $ = B[_];
                if ($.style.display != "none")
                    A++
            }
            return A
        },
        Is90: function () {
            var _ = jQuery(".mini-grid-detailRow", this.el),
		B = this.W9q();
            for (var A = 0, C = _.length; A < C; A++) {
                var D = _[A],
			$ = D.firstChild;
                $.colSpan = B
            }
        },
        LIjm: function () {
            for (var $ = 0, B = this.data.length; $ < B; $++) {
                var _ = this.data[$];
                if (_._showDetail == true) {
                    var C = this.SIh(_),
				A = document.getElementById(C);
                    if (A)
                        mini.layout(A)
                }
            }
        },
        TwI: function () {
            for (var $ = 0, B = this.data.length; $ < B; $++) {
                var _ = this.data[$];
                if (_._editing == true) {
                    var A = this.EFU(_);
                    if (A)
                        mini.layout(A)
                }
            }
        },
        AtsU: function ($) {
            $.cancel = true;
            this.gotoPage($.pageIndex, $[Ti2])
        },
        setSizeList: function ($) {
            if (!mini.isArray($))
                return;
            this.pager.setSizeList($)
        },
        getSizeList: function () {
            return this.pager.getSizeList()
        },
        setPageSize: function ($) {
            $ = parseInt($);
            if (isNaN($))
                return;
            this[Ti2] = $;
            if (this.pager)
                this.pager.update(this.pageIndex, this.pageSize, this[HoaN])
        },
        getPageSize: function () {
            return this[Ti2]
        },
        setPageIndex: function ($) {
            $ = parseInt($);
            if (isNaN($))
                return;
            this[IKs_] = $;
            if (this.pager)
                this.pager.update(this.pageIndex, this.pageSize, this[HoaN])
        },
        getPageIndex: function () {
            return this[IKs_]
        },
        setShowPageSize: function ($) {
            this.showPageSize = $;
            this.pager.setShowPageSize($)
        },
        getShowPageSize: function () {
            return this.showPageSize
        },
        setShowPageIndex: function ($) {
            this.showPageIndex = $;
            this.pager.setShowPageIndex($)
        },
        getShowPageIndex: function () {
            return this.showPageIndex
        },
        setShowTotalCount: function ($) {
            this.showTotalCount = $;
            this.pager.setShowTotalCount($)
        },
        getShowTotalCount: function () {
            return this.showTotalCount
        },
        pageIndex: 0,
        pageSize: 10,
        totalCount: 0,
        totalPage: 0,
        showPageSize: true,
        showPageIndex: true,
        showTotalCount: true,
        setTotalCount: function ($) {
            this[HoaN] = $;
            this.pager.setTotalCount($)
        },
        getTotalCount: function () {
            return this[HoaN]
        },
        getTotalPage: function () {
            return this.totalPage
        },
        sortField: "",
        sortOrder: "",
        url: "",
        autoLoad: false,
        loadParams: null,
        ajaxAsync: true,
        ajaxMethod: "post",
        showLoading: true,
        resultAsData: false,
        checkSelectOnLoad: true,
        setCheckSelectOnLoad: function ($) {
            this[Sp] = $
        },
        getCheckSelectOnLoad: function () {
            return this[Sp]
        },
        I9t: "total",
        _dataField: "data",
        ZsJJ: function ($) {
            return $.data
        },
        IGi: function (_, B, C) {
            _ = _ || {};
            if (mini.isNull(_[IKs_]))
                _[IKs_] = 0;
            if (mini.isNull(_[Ti2]))
                _[Ti2] = this[Ti2];
            _.sortField = this.sortField;
            _.sortOrder = this.sortOrder;
            if (this.sortMode != "server") {
                _.sortField = this.sortField = "";
                _.sortOrder = this.sortOrder = ""
            }
            this.loadParams = _;
            //                        if (this.showLoading)
            //                            this.loading();
            var A = this.url,
		E = this.ajaxMethod;
            if (A)
                if (A.indexOf(".txt") != -1 || A.indexOf(".json") != -1)
                    E = "get";
            var D = {
                url: A,
                async: this.ajaxAsync,
                type: E,
                params: _,
                cancel: false
            };
            this.fire("beforeload", D);
            if (D.cancel == true)
                return;
            this.RRkValue = this.RRk ? this.RRk[this.idField] : null;
            var $ = this;
            this.V5o = jQuery.ajax({
                url: D.url,
                async: D.async,
                data: D.params,
                type: D.type,
                cache: false,
                dataType: "text",
                success: function (F, D, C) {
                    var J = null;
                    try {
                        J = mini.decode(F)
                    } catch (K) {
                        //throw new Error("datagrid json is error!")
                    }
                    if (J == null)
                        J = {
                            data: [],
                            total: 0
                        };
                    $.unmask();
                    if (mini.isNumber(J.error) && J.error != 0) {
                        var L = {
                            errorCode: J.error,
                            xmlHttp: C,
                            errorMsg: J.errorMsg,
                            result: J
                        };
                        $.fire("loaderror", L);
                        return
                    }
                    if ($[ShoG] || mini.isArray(J)) {
                        var G = {};
                        G[$.I9t] = J.length;
                        G.data = J;
                        J = G
                    }
                    var E = parseInt(J[$.I9t]),
					I = $.ZsJJ(J);
                    if (mini.isNumber(_[IKs_]))
                        $[IKs_] = _[IKs_];
                    if (mini.isNumber(_[Ti2]))
                        $[Ti2] = _[Ti2];
                    if (mini.isNumber(E))
                        $[HoaN] = E;
                    var K = {
                        result: J,
                        data: I,
                        total: E,
                        cancel: false
                    };
                    $.fire("preload", K);
                    if (K.cancel == true)
                        return;
                    var H = $.XgLp;
                    $.XgLp = false;
                    $[Aw](K.data);
                    if ($.RRkValue && $[Sp]) {
                        var A = $[NK]($.RRkValue);
                        if (A)
                            $[Zk](A);
                        else
                            $[BJTJ]()
                    } else if ($.RRk)
                        $[BJTJ]();
                    if ($[FSi]() == null && $.selectOnLoad && $.data.length > 0)
                        $[Zk](0);
                    if ($.collapseGroupOnLoad)
                        $.collapseGroups();
                    $.fire("load", K);
                    if (B)
                        B[R05g]($, J);
                    $.XgLp = H;
                    $[SA]()
                },
                error: function (_, B, A) {
                    if (C)
                        C[R05g](scope, _);
                    var D = {
                        xmlHttp: _,
                        errorMsg: _.responseText,
                        errorCode: B
                    };
                    $.fire("loaderror", D);
                    $.unmask()
                }
            })
        },
        load: function (_, A, B) {
            if (this._loadTimer)
                clearTimeout(this._loadTimer);
            var $ = this;
            this[IXv]();
            this.loadParams = _ || {};
            if (this.ajaxAsync)
                this._loadTimer = setTimeout(function () {
                    $.IGi(_, A, B)
                }, 1);
            else
                $.IGi(_, A, B)
        },
        reload: function (_, $) {
            this.load(this.loadParams, _, $)
        },
        gotoPage: function ($, A) {
            var _ = this.loadParams || {};
            if (mini.isNumber($))
                _[IKs_] = $;
            if (mini.isNumber(A))
                _[Ti2] = A;
            this.load(_)
        },
        sortBy: function (E, D) {
            this.sortField = E;
            this.sortOrder = D == "asc" ? "asc" : "desc";
            if (this.sortMode == "server") {
                var A = this.loadParams || {};
                A.sortField = E;
                A.sortOrder = D;
                A[IKs_] = this[IKs_];
                this.load(A)
            } else {
                var B = this.getData().clone(),
			C = this._getSortFnByField(E);
                if (!C)
                    return;
                var G = [];
                for (var _ = B.length - 1; _ >= 0; _--) {
                    var $ = B[_],
				F = $[E];
                    if (mini.isNull(F) || F === "") {
                        G.insert(0, $);
                        B.removeAt(_)
                    }
                }
                mini.sort(B, C, this);
                B.insertRange(0, G);
                if (this.sortOrder == "desc")
                    B.reverse();
                this.data = B;
                this[YaK]()
            }
        },
        clearSort: function () {
            this.sortField = "";
            this.sortOrder = "";
            this.reload()
        },
        _getSortFnByField: function (D) {
            if (!D)
                return null;
            var F = "string",
		C = null,
		E = this[DM]();
            for (var $ = 0, G = E.length; $ < G; $++) {
                var A = E[$];
                if (A.field == D) {
                    if (A.dataType)
                        F = A.dataType.toLowerCase();
                    break
                }
            }
            var B = mini.sortTypes[F];
            if (!B)
                B = mini.sortTypes["string"];
            function _(A, F) {
                var C = A[D],
			_ = F[D];
                if (mini.isNull(C) || C === "" || isNaN(C))
                    return -1;
                if (mini.isNull(_) || _ === "" || isNaN(_))
                    return 1;
                var $ = B(C),
			E = B(_);
                if ($ > E)
                    return 1;
                else if ($ == E)
                    return 0;
                else
                    return -1
            }
            C = _;
            return C
        },
        allowCellSelect: false,
        allowCellEdit: false,
        P$jo: "mini-grid-cell-selected",
        Ms12: null,
        ME: null,
        Ll_: null,
        I2d: null,
        WG: function (B) {
            if (this.Ms12) {
                var $ = this.Ms12[0],
			A = this.Ms12[1],
			_ = this.Bv($, A);
                if (_)
                    if (B)
                        E$_(_, this.P$jo);
                    else
                        ZVS(_, this.P$jo)
            }
        },
        setCurrentCell: function ($) {
            if (this.Ms12 != $) {
                this.WG(false);
                this.Ms12 = $;
                this.WG(true);
                if ($)
                    this[Ls]($[0], $[1]);
                this.fire("currentcellchanged")
            }
        },
        getCurrentCell: function () {
            var $ = this.Ms12;
            if ($)
                if (this.data.indexOf($[0]) == -1) {
                    this.Ms12 = null;
                    $ = null
                }
            return $
        },
        setAllowCellSelect: function ($) {
            this[L4] = $
        },
        getAllowCellSelect: function ($) {
            return this[L4]
        },
        setAllowCellEdit: function ($) {
            this[M_] = $
        },
        getAllowCellEdit: function ($) {
            return this[M_]
        },
        beginEditCell: function ($, A) {
            var _ = [$, A];
            if ($ && _)
                grid[BdKb](_);
            _ = this.getCurrentCell();
            if (this.ME && _)
                if (this.ME[0] == _[0] && this.ME[1] == _[1])
                    return;
            if (this.ME)
                this.commitEdit();
            if (_) {
                var $ = _[0],
			A = _[1],
			B = this.Wq($, A, this[Ceaw](A));
                if (B !== false) {
                    this.ME = _;
                    this.J3($, A)
                }
            }
        },
        cancelEdit: function () {
            if (this[M_]) {
                if (this.ME)
                    this.Mbl()
            } else if (this[VmPU]()) {
                this.XgLp = false;
                var A = this.data.clone();
                for (var $ = 0, B = A.length; $ < B; $++) {
                    var _ = A[$];
                    if (_._editing == true)
                        this[Kdke]($)
                }
                this.XgLp = true;
                this[SA]()
            }
        },
        commitEdit: function () {
            if (this[M_]) {
                if (this.ME) {
                    this.R9g9(this.ME[0], this.ME[1]);
                    this.Mbl()
                }
            } else if (this[VmPU]()) {
                this.XgLp = false;
                var A = this.data.clone();
                for (var $ = 0, B = A.length; $ < B; $++) {
                    var _ = A[$];
                    if (_._editing == true)
                        this[A6i]($)
                }
                this.XgLp = true;
                this[SA]()
            }
        },
        getCellEditor: function (_, $) {
            _ = this[Ul](_);
            if (!_)
                return;
            if (this[M_]) {
                var B = mini.getAndCreate(_.editor);
                if (B && B != _.editor)
                    _.editor = B;
                return B
            } else {
                $ = this[VK]($);
                _ = this[Ul](_);
                if (!$)
                    $ = this.getEditingRow();
                if (!$ || !_)
                    return null;
                var A = this.uid + "$" + $._uid + "$" + _.name + "$editor";
                return mini.get(A)
            }
        },
        Wq: function ($, A, C) {
            var B = {
                sender: this,
                rowIndex: this.data.indexOf($),
                row: $,
                record: $,
                column: A,
                field: A.field,
                editor: C,
                value: $[A.field],
                cancel: false
            };
            this.fire("cellbeginedit", B);
            var C = B.editor;
            value = B.value;
            if (B.cancel)
                return false;
            if (!C)
                return false;
            if (mini.isNull(value))
                value = "";
            if (C[XlA])
                C[XlA](value);
            C.ownerRowID = $._uid;
            if (A.displayField && C[T0B]) {
                var _ = $[A.displayField];
                C[T0B](_)
            }
            if (this[M_])
                this.Ll_ = B.editor;
            return true
        },
        R9g9: function (_, B, A, D) {
            var C = {
                sender: this,
                record: _,
                row: _,
                column: B,
                field: B.field,
                editor: D ? D : this[Ceaw](B),
                value: mini.isNull(A) ? "" : A,
                text: "",
                cancel: false
            };
            if (C.editor && C.editor.getValue)
                C.value = C.editor.getValue();
            if (C.editor && C.editor.getText)
                C.text = C.editor.getText();
            this.fire("cellcommitedit", C);
            if (C.cancel == false)
                if (this[M_]) {
                    var $ = {};
                    $[B.field] = C.value;
                    if (B.displayField)
                        $[B.displayField] = C.text;
                    this[FD](_, $)
                }
            return C
        },
        Mbl: function () {
            if (!this.ME)
                return;
            var _ = this.ME[0],
		C = this.ME[1],
		E = {
		    sender: this,
		    record: _,
		    row: _,
		    column: C,
		    field: C.field,
		    editor: this.Ll_,
		    value: _[C.field]
		};
            this.fire("cellendedit", E);
            if (this[M_]) {
                var D = E.editor;
                if (D && D.setIsValid)
                    D.setIsValid(true);
                if (this.I2d)
                    this.I2d.style.display = "none";
                var A = this.I2d.childNodes;
                for (var $ = A.length - 1; $ >= 0; $--) {
                    var B = A[$];
                    this.I2d.removeChild(B)
                }
                if (D && D[LjIM])
                    D[LjIM]();
                if (D && D[XlA])
                    D[XlA]("");
                this.Ll_ = null;
                this.ME = null;
                if (this.allowCellValid)
                    this.validateCell(_, C)
            }
        },
        J3: function (_, C) {
            if (!this.Ll_)
                return false;
            var $ = this[V5n](_, C),
		E = {
		    sender: this,
		    record: _,
		    row: _,
		    column: C,
		    field: C.field,
		    cellBox: $,
		    editor: this.Ll_
		};
            this.fire("cellshowingedit", E);
            var D = E.editor;
            if (D && D.setIsValid)
                D.setIsValid(true);
            var B = this.OkI($);
            this.I2d.style.zIndex = mini.getMaxZIndex();
            if (D[Tlr9]) {
                D[Tlr9](this.I2d);
                setTimeout(function () {
                    D.focus();
                    if (D[UX9])
                        D[UX9]()
                }, 10);
                if (D[IJjY])
                    D[IJjY](true)
            } else if (D.el) {
                this.I2d.appendChild(D.el);
                setTimeout(function () {
                    try {
                        D.el.focus()
                    } catch ($) { }

                }, 10)
            }
            if (D[RG$]) {
                var A = $.width;
                if (A < 50)
                    A = 50;
                D[RG$](A)
            }
            Boy(document, "mousedown", this.BG, this);
            if (C.autoShowPopup && D[_0oZ])
                D[_0oZ]()
        },
        BG: function (C) {
            if (this.Ll_) {
                var A = this.J0(C);
                if (this.ME && A)
                    if (this.ME[0] == A.record && this.ME[1] == A.column)
                        return false;
                var _ = false;
                if (this.Ll_[BmC])
                    _ = this.Ll_[BmC](C);
                else
                    _ = Uqe(this.I2d, C.target);
                if (_ == false) {
                    var B = this;
                    if (Uqe(this.Jo4, C.target) == false)
                        setTimeout(function () {
                            B.commitEdit()
                        }, 1);
                    else {
                        var $ = B.ME;
                        setTimeout(function () {
                            var _ = B.ME;
                            if ($ == _)
                                B.commitEdit()
                        }, 70)
                    }
                    Ej(document, "mousedown", this.BG, this)
                }
            }
        },
        OkI: function ($) {
            if (!this.I2d) {
                this.I2d = mini.append(document.body, "<div class=\"mini-grid-editwrap\" style=\"position:absolute;\"></div>");
                Boy(this.I2d, "keydown", this.VGl, this)
            }
            this.I2d.style.zIndex = 1000000000;
            this.I2d.style.display = "block";
            mini[_20](this.I2d, $.x, $.y);
            X9c(this.I2d, $.width);
            return this.I2d
        },
        VGl: function (A) {
            var _ = this.Ll_;
            if (A.keyCode == 13 && A.ctrlKey == false && _ && _.type == "textarea")
                return;
            if (A.keyCode == 38 || A.keyCode == 40)
                A.preventDefault();
            if (A.keyCode == 13) {
                var $ = this.ME;
                if ($ && $[1] && $[1].enterCommit === false)
                    return;
                this.commitEdit();
                this.focus()
            } else if (A.keyCode == 27) {
                this[IXv]();
                this.focus()
            } else if (A.keyCode == 9)
                this[IXv]()
        },
        getEditorOwnerRow: function (_) {
            var $ = _.ownerRowID;
            return this.getRowByUID($)
        },
        beginEditRow: function (row) {
            if (this[M_])
                return;
            var sss = new Date();
            row = this[VK](row);
            if (!row)
                return;
            var rowEl = this.EFU(row);
            if (!rowEl)
                return;
            row._editing = true;
            var s = this.Bqi(row),
		rowEl = this.EFU(row);
            jQuery(rowEl).before(s);
            rowEl.parentNode.removeChild(rowEl);
            rowEl = this.EFU(row);
            E$_(rowEl, "mini-grid-rowEdit");
            var columns = this[DM]();
            for (var i = 0, l = columns.length; i < l; i++) {
                var column = columns[i],
			value = row[column.field],
			cellId = this._K(row, columns[i]),
			cellEl = document.getElementById(cellId);
                if (!cellEl)
                    continue;
                if (typeof column.editor == "string")
                    column.editor = eval("(" + column.editor + ")");
                var editorConfig = mini.copyTo({}, column.editor);
                editorConfig.id = this.uid + "$" + row._uid + "$" + column.name + "$editor";
                var editor = mini.create(editorConfig);
                if (this.Wq(row, column, editor))
                    if (editor) {
                        E$_(cellEl, "mini-grid-cellEdit");
                        cellEl.innerHTML = "";
                        cellEl.appendChild(editor.el);
                        E$_(editor.el, "mini-grid-editor")
                    }
            }
            this[SA]()
        },
        cancelEditRow: function (B) {
            if (this[M_])
                return;
            B = this[VK](B);
            if (!B || !B._editing)
                return;
            delete B._editing;
            var _ = this.EFU(B),
		D = this[DM]();
            for (var $ = 0, F = D.length; $ < F; $++) {
                var C = D[$],
			H = this._K(B, D[$]),
			A = document.getElementById(H),
			E = A.firstChild,
			I = mini.get(E);
                if (!I)
                    continue;
                I[Yr3P]()
            }
            var G = this.Bqi(B);
            jQuery(_).before(G);
            _.parentNode.removeChild(_);
            this[SA]()
        },
        commitEditRow: function ($) {
            if (this[M_])
                return;
            $ = this[VK]($);
            if (!$ || !$._editing)
                return;
            var _ = this[Cqg]($);
            this.Xlh = false;
            this[FD]($, _);
            this.Xlh = true;
            this[Kdke]($)
        },
        isEditing: function () {
            for (var $ = 0, A = this.data.length; $ < A; $++) {
                var _ = this.data[$];
                if (_._editing == true)
                    return true
            }
            return false
        },
        isEditingRow: function ($) {
            $ = this[VK]($);
            if (!$)
                return false;
            return !!$._editing
        },
        isNewRow: function ($) {
            return $._state == "added"
        },
        getEditingRows: function () {
            var A = [];
            for (var $ = 0, B = this.data.length; $ < B; $++) {
                var _ = this.data[$];
                if (_._editing == true)
                    A.push(_)
            }
            return A
        },
        getEditingRow: function () {
            var $ = this.getEditingRows();
            return $[0]
        },
        getEditData: function (C) {
            var B = [];
            for (var $ = 0, D = this.data.length; $ < D; $++) {
                var _ = this.data[$];
                if (_._editing == true) {
                    var A = this[Cqg]($, C);
                    A._index = $;
                    B.push(A)
                }
            }
            return B
        },
        getEditRowData: function (G, I) {
            G = this[VK](G);
            if (!G || !G._editing)
                return null;
            var H = {},
		B = this[DM]();
            for (var F = 0, C = B.length; F < C; F++) {
                var A = B[F],
			D = this._K(G, B[F]),
			_ = document.getElementById(D),
			J = _.firstChild,
			E = mini.get(J);
                if (!E)
                    continue;
                var K = this.R9g9(G, A, null, E);
                H[A.field] = K.value;
                if (A.displayField)
                    H[A.displayField] = K.text
            }
            H[this.idField] = G[this.idField];
            if (I) {
                var $ = mini.copyTo({}, G);
                H = mini.copyTo($, H)
            }
            return H
        },
        getChanges: function (B) {
            var A = [];
            if (!B || B == "removed")
                A.addRange(this.MFS);
            for (var $ = 0, C = this.data.length; $ < C; $++) {
                var _ = this.data[$];
                if (_._state && (!B || B == _._state))
                    A.push(_)
            }
            return A
        },
        isChanged: function () {
            var $ = this.getChanges();
            return $.length > 0
        },
        Zeq: "_uid",
        GlC: function ($) {
            var A = $[this.Zeq],
		_ = this.O_[A];
            if (!_)
                _ = this.O_[A] = {};
            return _
        },
        XsBI: function (A, _) {
            var $ = this.O_[A[this.Zeq]];
            if (!$)
                return false;
            if (mini.isNull(_))
                return false;
            return $.hasOwnProperty(_)
        },
        $d4: function (A, B) {
            var E = false;
            for (var C in B) {
                var $ = B[C],
			D = A[C];
                if (mini[Paj](D, $))
                    continue;
                A[C] = $;
                if (A._state != "added") {
                    A._state = "modified";
                    var _ = this.GlC(A);
                    if (!_.hasOwnProperty(C))
                        _[C] = D
                }
                E = true
            }
            return E
        },
        Xlh: true,
        updateRow: function (B, C, A) {
            B = this[VK](B);
            if (!B || !C)
                return;
            if (typeof C == "string") {
                var $ = {};
                $[C] = A;
                C = $
            }
            var E = this.$d4(B, C);
            if (E == false)
                return;
            if (this.Xlh) {
                var D = this,
			F = D.Bqi(B),
			_ = D.EFU(B);
                jQuery(_).before(F);
                _.parentNode.removeChild(_)
            }
            if (B._state == "modified")
                this.fire("updaterow", {
                    record: B,
                    row: B
                });
            if (B == this[FSi]())
                this.QtF6(B);
            this.$A()
        },
        deleteRows: function (_) {
            if (!mini.isArray(_))
                return;
            _ = _.clone();
            for (var $ = 0, A = _.length; $ < A; $++)
                this.deleteRow(_[$])
        },
        deleteRow: function (_) {
            _ = this[VK](_);
            if (!_ || _._state == "deleted")
                return;
            if (_._state == "added")
                this[SMr](_, true);
            else {
                if (this.isEditingRow(_))
                    this[Kdke](_);
                _._state = "deleted";
                var $ = this.EFU(_);
                E$_($, "mini-grid-deleteRow");
                this.fire("deleterow", {
                    record: _,
                    row: _
                })
            }
        },
        removeRows: function (_, B) {
            if (!mini.isArray(_))
                return;
            _ = _.clone();
            for (var $ = 0, A = _.length; $ < A; $++)
                this[SMr](_[$], B)
        },
        removeSelected: function () {
            var $ = this[FSi]();
            if ($)
                this[SMr]($, true)
        },
        removeRow: function (A, H) {
            A = this[VK](A);
            if (!A)
                return;
            var D = A == this[FSi](),
		C = this[CTG$](A),
		$ = this.data.indexOf(A);
            this.data.remove(A);
            if (A._state != "added") {
                A._state = "removed";
                this.MFS.push(A);
                delete this.O_[A[this.Zeq]]
            }
            delete this.R1k[A._uid];
            var G = this.Bqi(A),
		_ = this.EFU(A);
            if (_)
                _.parentNode.removeChild(_);
            var F = this.SIh(A),
		E = document.getElementById(F);
            if (E)
                E.parentNode.removeChild(E);
            if (C && H) {
                var B = this.getAt($);
                if (!B)
                    B = this.getAt($ - 1);
                this[BJTJ]();
                this[Zk](B)
            }
            this.MVO();
            this.fire("removerow", {
                record: A,
                row: A
            });
            if (D)
                this.QtF6(A);
            this.WUn();
            this.$A()
        },
        autoCreateNewID: false,
        addRows: function (A, $) {
            if (!mini.isArray(A))
                return;
            A = A.clone();
            for (var _ = 0, B = A.length; _ < B; _++)
                this.addRow(A[_], $)
        },
        addRow: function (A, $) {
            if (mini.isNull($))
                $ = this.data.length;
            $ = this.indexOf($);
            var B = this[VK]($);
            this.data.insert($, A);
            if (!A[this.idField]) {
                if (this.autoCreateNewID)
                    A[this.idField] = UUID();
                var D = {
                    row: A,
                    record: A
                };
                this.fire("beforeaddrow", D)
            }
            A._state = "added";
            delete this.R1k[A._uid];
            A._uid = Vmw++;
            this.R1k[A._uid] = A;
            var C = this.Bqi(A);
            if (B) {
                var _ = this.EFU(B);
                jQuery(_).before(C)
            } else
                mini.append(this._bodyInnerEl.firstChild, C);
            this.WUn();
            this.$A();
            this.fire("addrow", {
                record: A,
                row: A
            })
        },
        moveRow: function (B, _) {
            B = this[VK](B);
            if (!B)
                return;
            if (_ < 0)
                return;
            if (_ > this.data.length)
                return;
            var D = this[VK](_);
            if (B == D)
                return;
            this.data.remove(B);
            var A = this.EFU(B);
            if (D) {
                _ = this.data.indexOf(D);
                this.data.insert(_, B);
                var C = this.EFU(D);
                jQuery(C).before(A)
            } else {
                this.data.insert(this.data.length, B);
                var $ = this._bodyInnerEl.firstChild;
                mini.append($.firstChild || $, A)
            }
            this.WUn();
            this.$A();
            this[Ls](B);
            this.fire("moverow", {
                record: B,
                row: B,
                index: _
            })
        },
        clearRows: function () {
            this.data = [];
            this[YaK]()
        },
        indexOf: function ($) {
            if (typeof $ == "number")
                return $;
            return this.data.indexOf($)
        },
        getAt: function ($) {
            return this.data[$]
        },
        getRow: function ($) {
            var _ = typeof $;
            if (_ == "number")
                return this.data[$];
            else if (_ == "object")
                return $
        },
        getRowByValue: function (A) {
            for (var _ = 0, B = this.data.length; _ < B; _++) {
                var $ = this.data[_];
                if ($[this.idField] == A)
                    return $
            }
        },
        getRowByUID: function ($) {
            return this.R1k[$]
        },
        findRows: function (C) {
            var A = [];
            if (C)
                for (var $ = 0, B = this.data.length; $ < B; $++) {
                    var _ = this.data[$];
                    if (C(_) === true)
                        A.push(_)
                }
            return A
        },
        findRow: function (B) {
            if (B)
                for (var $ = 0, A = this.data.length; $ < A; $++) {
                    var _ = this.data[$];
                    if (B(_) === true)
                        return _
                }
        },
        collapseGroupOnLoad: false,
        setCollapseGroupOnLoad: function ($) {
            this.collapseGroupOnLoad = $
        },
        getCollapseGroupOnLoad: function () {
            return this.collapseGroupOnLoad
        },
        showGroupSummary: false,
        setShowGroupSummary: function ($) {
            this.showGroupSummary = $
        },
        getShowGroupSummary: function () {
            return this.showGroupSummary
        },
        collapseGroups: function () {
            if (!this.YjU1)
                return;
            for (var $ = 0, A = this.YjU1.length; $ < A; $++) {
                var _ = this.YjU1[$];
                this.MWP(_)
            }
        },
        expandGroups: function () {
            if (!this.YjU1)
                return;
            for (var $ = 0, A = this.YjU1.length; $ < A; $++) {
                var _ = this.YjU1[$];
                this.LWH(_)
            }
        },
        MWP: function (A) {
            var C = A.rows;
            for (var _ = 0, E = C.length; _ < E; _++) {
                var B = C[_],
			$ = this.EFU(B);
                if ($)
                    $.style.display = "none"
            }
            A.expanded = false;
            var F = this.uid + "$group$" + A.id,
		D = document.getElementById(F);
            if (D)
                E$_(D, "mini-grid-group-collapse");
            this[SA]()
        },
        LWH: function (A) {
            var C = A.rows;
            for (var _ = 0, E = C.length; _ < E; _++) {
                var B = C[_],
			$ = this.EFU(B);
                if ($)
                    $.style.display = ""
            }
            A.expanded = true;
            var F = this.uid + "$group$" + A.id,
		D = document.getElementById(F);
            if (D)
                ZVS(D, "mini-grid-group-collapse");
            this[SA]()
        },
        IPf: 1,
        ZXiX: "",
        Ac1v: "",
        groupBy: function ($, _) {
            if (!$)
                return;
            this.ZXiX = $;
            if (typeof _ == "string")
                _ = _.toLowerCase();
            this.Ac1v = _;
            this.YjU1 = null;
            this[YaK]()
        },
        clearGroup: function () {
            this.ZXiX = "";
            this.Ac1v = "";
            this.YjU1 = null;
            this[YaK]()
        },
        getGroupField: function () {
            return this.ZXiX
        },
        getGroupDir: function () {
            return this.Ac1v
        },
        isGrouping: function () {
            return this.ZXiX != ""
        },
        XY: function () {
            if (this[EfN]() == false)
                return null;
            this.YjU1 = null;
            if (!this.YjU1) {
                var F = this.ZXiX,
			H = this.Ac1v,
			D = this.data.clone();
                if (typeof H == "function")
                    mini.sort(D, H);
                else {
                    mini.sort(D, function (_, B) {
                        var $ = _[F],
					A = B[F];
                        if ($ > A)
                            return 1;
                        else
                            return 0
                    }, this);
                    if (H == "desc")
                        D.resvert()
                }
                var B = [],
			C = {};
                for (var _ = 0, G = D.length; _ < G; _++) {
                    var $ = D[_],
				I = $[F],
				E = mini.isDate(I) ? I.getTime() : I,
				A = C[E];
                    if (!A) {
                        A = C[E] = {};
                        A.field = F,
					A.dir = H;
                        A.value = I;
                        A.rows = [];
                        B.push(A);
                        A.id = this.IPf++
                    }
                    A.rows.push($)
                }
                this.YjU1 = B
            }
            return this.YjU1
        },
        HEh: function (C) {
            if (!this.YjU1)
                return null;
            var A = this.YjU1;
            for (var $ = 0, B = A.length; $ < B; $++) {
                var _ = A[$];
                if (_.id == C)
                    return _
            }
        },
        XB5: function ($) {
            var _ = {
                group: $,
                rows: $.rows,
                field: $.field,
                dir: $.dir,
                value: $.value,
                cellHtml: $.field + " :" + $.value
            };
            this.fire("drawgroup", _);
            return _
        },
        onDrawGroupHeader: function (_, $) {
            this.on("drawgroupheader", _, $)
        },
        onDrawGroupSummary: function (_, $) {
            this.on("drawgroupsummary", _, $)
        },
        margeCells: function (F) {
            if (!mini.isArray(F))
                return;
            for (var $ = 0, D = F.length; $ < D; $++) {
                var B = F[$];
                if (!B.rowSpan)
                    B.rowSpan = 1;
                if (!B.colSpan)
                    B.colSpan = 1;
                var E = this.Que(B.rowIndex, B.columnIndex, B.rowSpan, B.colSpan);
                for (var C = 0, _ = E.length; C < _; C++) {
                    var A = E[C];
                    if (C != 0)
                        A.style.display = "none";
                    else {
                        A.rowSpan = B.rowSpan;
                        A.colSpan = B.colSpan
                    }
                }
            }
        },
        Que: function (I, E, A, B) {
            var J = [];
            if (!mini.isNumber(I))
                return [];
            if (!mini.isNumber(E))
                return [];
            var C = this[DM](),
		G = this.data;
            for (var F = I, D = I + A; F < D; F++)
                for (var H = E, $ = E + B; H < $; H++) {
                    var _ = this.Bv(F, H);
                    if (_)
                        J.push(_)
                }
            return J
        },
        RRk: null,
        N2A: [],
        MVO: function () {
            var A = this.N2A;
            for (var $ = A.length - 1; $ >= 0; $--) {
                var _ = A[$];
                if (!!this.R1k[_._uid] == false) {
                    A.removeAt($);
                    delete this.Xl6z[_._uid]
                }
            }
            if (this.RRk)
                if (!!this.Xl6z[this.RRk._uid] == false)
                    this.RRk = null
            },
            setAllowRowSelect: function ($) {
                this[F9] = $
            },
            getAllowRowSelect: function ($) {
                return this[F9]
            },
            setMultiSelect: function ($) {
                if (this[ARtO] != $) {
                    this[ARtO] = $;
                    this.NIc()
                }
            },
            isSelected: function ($) {
                $ = this[VK]($);
                if (!$)
                    return false;
                return !!this.Xl6z[$._uid]
            },
            getSelecteds: function () {
                this.MVO();
                return this.N2A.clone()
            },
            setCurrent: function ($) {
                this[ZW6]($)
            },
            getCurrent: function () {
                return this[FSi]()
            },
            getSelected: function () {
                this.MVO();
                return this.RRk
            },
            scrollIntoView: function (A, B) {
                try {
                    if (B) {
                        var _ = this.Bv(A, B);
                        mini[Ls](_, this.Jo4, true)
                    } else {
                        var $ = this.EFU(A);
                        mini[Ls]($, this.Jo4, false)
                    }
                } catch (C) { }

            },
            setSelected: function ($) {
                if ($)
                    this[Zk]($);
                else
                    this[TgC](this.RRk);
                if (this.RRk)
                    this[Ls](this.RRk);
                this.AA()
            },
            select: function ($) {
                $ = this[VK]($);
                if (!$)
                    return;
                this.RRk = $;
                this[_D]([$])
            },
            deselect: function ($) {
                $ = this[VK]($);
                if (!$)
                    return;
                this[BZt]([$])
            },
            selectAll: function () {
                var $ = this.data.clone();
                this[_D]($)
            },
            deselectAll: function () {
                var $ = this.N2A.clone();
                this.RRk = null;
                this[BZt]($)
            },
            clearSelect: function () {
                this[BJTJ]()
            },
            selects: function (A) {
                if (!A || A.length == 0)
                    return;
                A = A.clone();
                this.Hzr(A, true);
                for (var _ = 0, B = A.length; _ < B; _++) {
                    var $ = A[_];
                    if (!this[CTG$]($)) {
                        this.N2A.push($);
                        this.Xl6z[$._uid] = $
                    }
                }
                this.GyS()
            },
            deselects: function (A) {
                if (!A)
                    A = [];
                A = A.clone();
                this.Hzr(A, false);
                for (var _ = A.length - 1; _ >= 0; _--) {
                    var $ = A[_];
                    if (this[CTG$]($)) {
                        this.N2A.remove($);
                        delete this.Xl6z[$._uid]
                    }
                }
                if (A.indexOf(this.RRk) != -1)
                    this.RRk = null;
                this.GyS()
            },
            Hzr: function (A, D) {
                var B = new Date();
                for (var _ = 0, C = A.length; _ < C; _++) {
                    var $ = A[_];
                    if (D)
                        this[$iz]($, this.BD);
                    else
                        this[Ck5]($, this.BD)
                }
            },
            GyS: function () {
                if (this.DnJ)
                    clearTimeout(this.DnJ);
                var $ = this;
                this.DnJ = setTimeout(function () {
                    var _ = {
                        selecteds: $.getSelecteds(),
                        selected: $[FSi]()
                    };
                    $.fire("SelectionChanged", _);
                    $.QtF6(_.selected)
                }, 1)
            },
            QtF6: function ($) {
                if (this._currentTimer)
                    clearTimeout(this._currentTimer);
                var _ = this;
                this._currentTimer = setTimeout(function () {
                    var A = {
                        record: $,
                        row: $
                    };
                    _.fire("CurrentChanged", A);
                    _._currentTimer = null
                }, 1)
            },
            addRowCls: function (_, A) {
                var $ = this.EFU(_);
                if ($)
                    E$_($, A)
            },
            removeRowCls: function (_, A) {
                var $ = this.EFU(_);
                if ($)
                    ZVS($, A)
            },
            SYg: function (_, $) {
                _ = this[VK](_);
                if (!_ || _ == this.YcV)
                    return;
                var A = this.EFU(_);
                if ($ && A)
                    this[Ls](_);
                if (this.YcV == _)
                    return;
                this.AA();
                this.YcV = _;
                E$_(A, this.K54)
            },
            AA: function () {
                if (!this.YcV)
                    return;
                var $ = this.EFU(this.YcV);
                if ($)
                    ZVS($, this.K54);
                this.YcV = null
            },
            SdQa: function (B) {
                var A = $Rz(B.target, this.KsE);
                if (!A)
                    return null;
                var $ = A.id.split("$"),
		_ = $[$.length - 1];
                return this.getRowByUID(_)
            },
            _Dr: function (C, A) {
                if (this[M_])
                    this.commitEdit();
                var B = jQuery(this.Jo4).css("overflow-y");
                if (B == "hidden") {
                    var $ = C.wheelDelta || -C.detail * 24,
			_ = this.Jo4.scrollTop;
                    _ -= $;
                    this.Jo4.scrollTop = _;
                    if (_ == this.Jo4.scrollTop)
                        C.preventDefault();
                    var C = {
                        scrollTop: this.Jo4.scrollTop,
                        direction: "vertical"
                    };
                    this.fire("scroll", C)
                }
            },
            Qtm: function (D) {
                this._tryFocus(D);
                var A = $Rz(D.target, "mini-grid-groupRow");
                if (A) {
                    var _ = A.id.split("$"),
			C = _[_.length - 1],
			$ = this.HEh(C);
                    if ($) {
                        var B = !($.expanded === false ? false : true);
                        if (B)
                            this.LWH($);
                        else
                            this.MWP($)
                    }
                } else
                    this.ZtcL(D, "Click")
            },
            _tryFocus: function ($) {
                if (Uqe(this.Dzf, $.target) || Uqe(this.RpF$, $.target) || Uqe(this.Tqf, $.target) || $Rz($.target, "mini-grid-rowEdit") || $Rz($.target, "mini-grid-detailRow"));
                else
                    this.focus()
            },
            _89: function ($) {
                this.ZtcL($, "Dblclick")
            },
            CgJ: function ($) {
                this.ZtcL($, "MouseDown");
                this._tryFocus($)
            },
            JE: function ($) {
                this.ZtcL($, "MouseUp")
            },
            _jK: function ($) {
                this.ZtcL($, "MouseMove")
            },
            QwgP: function ($) {
                this.ZtcL($, "MouseOver")
            },
            S0ud: function ($) {
                this.ZtcL($, "MouseOut")
            },
            XiOq: function ($) {
                this.ZtcL($, "KeyDown")
            },
            EZj: function ($) {
                this.ZtcL($, "KeyUp")
            },
            ZN0: function ($) {
                this.ZtcL($, "ContextMenu")
            },
            ZtcL: function (F, D) {
                if (!this.enabled)
                    return;
                var C = this.J0(F),
		_ = C.record,
		B = C.column;
                if (_) {
                    var A = {
                        record: _,
                        row: _,
                        htmlEvent: F
                    },
			E = this["_OnRow" + D];
                    if (E)
                        E[R05g](this, A);
                    else
                        this.fire("row" + D, A)
                }
                if (B) {
                    A = {
                        column: B,
                        field: B.field,
                        htmlEvent: F
                    },
			E = this["_OnColumn" + D];
                    if (E)
                        E[R05g](this, A);
                    else
                        this.fire("column" + D, A)
                }
                if (_ && B) {
                    A = {
                        sender: this,
                        record: _,
                        row: _,
                        column: B,
                        field: B.field,
                        htmlEvent: F
                    },
			E = this["_OnCell" + D];
                    if (E)
                        E[R05g](this, A);
                    else
                        this.fire("cell" + D, A);
                    if (B["onCell" + D])
                        B["onCell" + D][R05g](B, A)
                }
                if (!_ && B) {
                    A = {
                        column: B,
                        htmlEvent: F
                    },
			E = this["_OnHeaderCell" + D];
                    if (E)
                        E[R05g](this, A);
                    else {
                        var $ = "onheadercell" + D.toLowerCase();
                        if (B[$]) {
                            A.sender = this;
                            B[$](A)
                        }
                        this.fire("headercell" + D, A)
                    }
                }
                if (!_)
                    this.AA()
            },
            QY8: function ($, B, C, D) {
                var _ = $[B.field],
		E = {
		    sender: this,
		    rowIndex: C,
		    columnIndex: D,
		    record: $,
		    row: $,
		    column: B,
		    field: B.field,
		    value: _,
		    cellHtml: _,
		    rowCls: null,
		    cellCls: B.cellCls || "",
		    rowStyle: null,
		    cellStyle: B.cellStyle || "",
		    allowCellWrap: this.allowCellWrap
		};
                if (B.dateFormat)
                    if (mini.isDate(E.value))
                        E.cellHtml = mini.formatDate(_, B.dateFormat);
                    else
                        E.cellHtml = _;
                if (B.displayField)
                    E.cellHtml = $[B.displayField];
                var A = B.renderer;
                if (A) {
                    fn = typeof A == "function" ? A : window[A];
                    if (fn)
                        E.cellHtml = fn[R05g](B, E)
                }
                this.fire("drawcell", E);
                if (E.cellHtml === null || E.cellHtml === undefined || E.cellHtml === "")
                    E.cellHtml = "&nbsp;";
                return E
            },
            _OnCellMouseDown: function (_) {
                var $ = _.record;
                if ($.enabled === false)
                    return;
                this.fire("cellmousedown", _)
            },
            _OnRowMouseOut: function ($) {
                if (!this.enabled)
                    return;
                if (Uqe(this.el, $.target))
                    return
            },
            _OnRowMouseMove: function (_) {
                record = _.record;
                if (!this.enabled || record.enabled === false || this[JYw0] == false)
                    return;
                this.fire("rowmousemove", _);
                var $ = this;
                $.SYg(record)
            },
            _OnHeaderCellClick: function (A) {
                A.sender = this;
                var $ = A.column;
                if (!Mjm(A.htmlEvent.target, "mini-grid-splitter")) {
                    if (this[YYKG] && this[VmPU]() == false)
                        if (!$.columns || $.columns.length == 0)
                            if ($.field && $.allowSort !== false) {
                                var _ = "asc";
                                if (this.sortField == $.field)
                                    _ = this.sortOrder == "asc" ? "desc" : "asc";
                                this.sortBy($.field, _)
                            }
                    this.fire("headercellclick", A)
                }
            },
            __OnHtmlContextMenu: function (_) {
                var $ = {
                    popupEl: this.el,
                    htmlEvent: _,
                    cancel: false
                };
                if (Uqe(this.OW, _.target)) {
                    if (this.headerContextMenu) {
                        this.headerContextMenu.fire("BeforeOpen", $);
                        if ($.cancel == true)
                            return;
                        this.headerContextMenu.fire("opening", $);
                        if ($.cancel == true)
                            return;
                        this.headerContextMenu.showAtPos(_.pageX, _.pageY);
                        this.headerContextMenu.fire("Open", $)
                    }
                } else if (this[R71]) {
                    this[R71].fire("BeforeOpen", $);
                    if ($.cancel == true)
                        return;
                    this[R71].fire("opening", $);
                    if ($.cancel == true)
                        return;
                    this[R71].showAtPos(_.pageX, _.pageY);
                    this[R71].fire("Open", $)
                }
                return false
            },
            headerContextMenu: null,
            setHeaderContextMenu: function ($) {
                var _ = this._getContextMenu($);
                if (!_)
                    return;
                if (this.headerContextMenu !== _) {
                    this.headerContextMenu = _;
                    this.headerContextMenu.owner = this;
                    Boy(this.el, "contextmenu", this.__OnHtmlContextMenu, this)
                }
            },
            getHeaderContextMenu: function () {
                return this.headerContextMenu
            },
            onRowDblClick: function (_, $) {
                this.on("rowdblclick", _, $)
            },
            onRowClick: function (_, $) {
                this.on("rowclick", _, $)
            },
            onRowMouseDown: function (_, $) {
                this.on("rowmousedown", _, $)
            },
            onRowContextMenu: function (_, $) {
                this.on("rowcontextmenu", _, $)
            },
            onCellClick: function (_, $) {
                this.on("cellclick", _, $)
            },
            onCellMouseDown: function (_, $) {
                this.on("cellmousedown", _, $)
            },
            onCellContextMenu: function (_, $) {
                this.on("cellcontextmenu", _, $)
            },
            onBeforeLoad: function (_, $) {
                this.on("beforeload", _, $)
            },
            onLoad: function (_, $) {
                this.on("load", _, $)
            },
            onLoadError: function (_, $) {
                this.on("loaderror", _, $)
            },
            onPreLoad: function (_, $) {
                this.on("preload", _, $)
            },
            onDrawCell: function (_, $) {
                this.on("drawcell", _, $)
            },
            onCellBeginEdit: function (_, $) {
                this.on("cellbeginedit", _, $)
            },
            getAttrs: function (el) {
                var attrs = MIZ[Ov][RH][R05g](this, el),
		cs = mini[SY0](el);
                for (var i = 0, l = cs.length; i < l; i++) {
                    var node = cs[i],
			property = jQuery(node).attr("property");
                    if (!property)
                        continue;
                    property = property.toLowerCase();
                    if (property == "columns")
                        attrs.columns = mini._ParseColumns(node);
                    else if (property == "data")
                        attrs.data = node.innerHTML
                }
                mini[A5ac](el, attrs, ["url", "sizeList", "bodyCls", "bodyStyle", "footerCls", "footerStyle", "pagerCls", "pagerStyle", "onrowdblclick", "onrowclick", "onrowmousedown", "onrowcontextmenu", "oncellclick", "oncellmousedown", "oncellcontextmenu", "onbeforeload", "onpreload", "onloaderror", "onload", "ondrawcell", "oncellbeginedit", "onselectionchanged", "onshowrowdetail", "onhiderowdetail", "idField", "valueField", "ajaxMethod", "ondrawgroup", "pager", "oncellcommitedit", "oncellendedit", "headerContextMenu", "loadingMsg", "emptyText", "cellEditAction", "sortMode", "oncellvalidation"]);
                mini[QRH](el, attrs, ["showHeader", "showFooter", "showTop", "allowSortColumn", "allowMoveColumn", "allowResizeColumn", "showHGridLines", "showVGridLines", "showFilterRow", "showSummaryRow", "showFooter", "showTop", "fitColumns", "showLoading", "multiSelect", "allowAlternating", "resultAsData", "allowRowSelect", "enableHotTrack", "showPageIndex", "showPageSize", "showTotalCount", "checkSelectOnLoad", "allowResize", "autoLoad", "autoHideRowDetail", "allowCellSelect", "allowCellEdit", "allowCellWrap", "selectOnLoad", "virtualScroll", "collapseGroupOnLoad", "showGroupSummary", "showEmptyText", "allowCellValid"]);
                mini[ClW](el, attrs, ["columnWidth", "frozenStartColumn", "frozenEndColumn", "pageIndex", "pageSize"]);
                if (typeof attrs[UbK] == "string")
                    attrs[UbK] = eval(attrs[UbK]);
                if (!attrs[XsI] && attrs[Dv])
                    attrs[XsI] = attrs[Dv];
                return attrs
            }
        });
        H58(MIZ, "datagrid");
        mini_Column_Prototype = {
            Bv: function ($, _) {
                $ = this[VK] ? this[VK]($) : this[Ook2]($);
                _ = this[Ul](_);
                if (!$ || !_)
                    return null;
                var A = this._K($, _);
                return document.getElementById(A)
            },
            J0: function (A) {
                var $ = this.SdQa ? this.SdQa(A) : this._getNodeByEvent(A),
		_ = this.N6h(A);
                return {
                    record: $,
                    column: _
                }
            },
            N6h: function (B) {
                var _ = $Rz(B.target, this._cellCls);
                if (!_)
                    _ = $Rz(B.target, this._headerCellCls);
                if (_) {
                    var $ = _.id.split("$"),
			A = $[$.length - 1];
                    return this.EH0(A)
                }
                return null
            },
            JnA: function ($) {
                return this.uid + "$column$" + $._id
            },
            getColumnBox: function (A) {
                var B = this.JnA(A),
		_ = document.getElementById(B);
                if (_) {
                    var $ = L05(_);
                    $.x -= 1;
                    $.left = $.x;
                    $.right = $.x + $.width;
                    return $
                }
            },
            setColumns: function (value) {
                if (!mini.isArray(value))
                    value = [];
                this.columns = value;
                this.Ty0 = {};
                this.RoS = {};
                this.Ac = [];
                this.maxColumnLevel = 0;
                var level = 0;
                function init(column, index, parentColumn) {
                    if (column.type) {
                        if (!mini.isNull(column.header) && typeof column.header !== "function")
                            if (column.header.trim() == "")
                                delete column.header;
                    var col = mini[VR](column.type);
                    if (col) {
                        var _column = mini.copyTo({}, column);
                        mini.copyTo(column, col);
                        mini.copyTo(column, _column)
                    }
                }
                var width = parseInt(column.width);
                if (mini.isNumber(width) && String(width) == column.width)
                    column.width = width + "px";
                if (mini.isNull(column.width))
                    column.width = this[X3e] + "px";
                column.visible = column.visible !== false;
                column[MZ] = column.allowRresize !== false;
                column.allowMove = column.allowMove !== false;
                column.allowSort = column.allowSort === true;
                column.allowDrag = !!column.allowDrag;
                column[MLU] = !!column[MLU];
                if (!column._id)
                    column._id = Yqn++;
                column._gridUID = this.uid;
                column[Cv2O] = this[Cv2O];
                column._pid = parentColumn == this ? -1 : parentColumn._id;
                this.Ty0[column._id] = column;
                if (column.name)
                    this.RoS[column.name] = column;
                if (!column.columns || column.columns.length == 0)
                    this.Ac.push(column);
                column.level = level;
                level += 1;
                this[YI6](column, init, this);
                level -= 1;
                if (column.level > this.maxColumnLevel)
                    this.maxColumnLevel = column.level;
                if (typeof column.editor == "string") {
                    var cls = mini.getClass(column.editor);
                    if (cls)
                        column.editor = {
                            type: column.editor
                        };
                    else
                        column.editor = eval("(" + column.editor + ")")
                }
                if (typeof column.filter == "string")
                    column.filter = eval("(" + column.filter + ")");
                if (column.filter && !column.filter.el)
                    column.filter = mini.create(column.filter);
                if (typeof column.init == "function" && column.inited != true)
                    column.init(this);
                column.inited = true
            }
            this[YI6](this, init, this);
            if (this.R3Y)
                this.R3Y();
            if (this._L7Y)
                this._L7Y();
            this[YaK]()
        },
        getColumns: function () {
            return this.columns
        },
        getBottomColumns: function () {
            return this.Ac
        },
        getBottomVisibleColumns: function () {
            var A = [];
            for (var $ = 0, B = this.Ac.length; $ < B; $++) {
                var _ = this.Ac[$];
                if (this[KBQM](_))
                    A.push(_)
            }
            return A
        },
        eachColumns: function (B, F, C) {
            var D = B.columns;
            if (D) {
                var _ = D.clone();
                for (var A = 0, E = _.length; A < E; A++) {
                    var $ = _[A];
                    if (F[R05g](C, $, A, B) === false)
                        break
                }
            }
        },
        getColumn: function ($) {
            var _ = typeof $;
            if (_ == "number")
                return this[DM]()[$];
            else if (_ == "object")
                return $;
            else
                return this.RoS[$]
        },
        EH0: function ($) {
            return this.Ty0[$]
        },
        getParentColumn: function ($) {
            $ = this[Ul]($);
            var _ = $._pid;
            if (_ == -1)
                return this;
            return this.Ty0[_]
        },
        getAncestorColumns: function (A) {
            var _ = [];
            while (1) {
                var $ = this[Pr0](A);
                if (!$ || $ == this)
                    break;
                _[_.length] = $;
                A = $
            }
            _.reverse();
            return _
        },
        isAncestorColumn: function (_, B) {
            if (_ == B)
                return true;
            if (!_ || !B)
                return false;
            var A = this[_46](B);
            for (var $ = 0, C = A.length; $ < C; $++)
                if (A[$] == _)
                    return true;
        return false
    },
    isVisibleColumn: function (_) {
        _ = this[Ul](_);
        var A = this[_46](_);
        for (var $ = 0, B = A.length; $ < B; $++)
            if (A[$].visible == false)
                return false;
    return true
},
updateColumn: function (_, $) {
    _ = this[Ul](_);
    if (!_)
        return;
    mini.copyTo(_, $);
    this[EaK](this.columns)
},
removeColumn: function ($) {
    $ = this[Ul]($);
    var _ = this[Pr0]($);
    if ($ && _) {
        _.columns.remove($);
        this[EaK](this.columns)
    }
    return $
},
moveColumn: function (C, _, A) {
    C = this[Ul](C);
    _ = this[Ul](_);
    if (!C || !_ || !A || C == _)
        return;
    if (this[ZPU](C, _))
        return;
    var D = this[Pr0](C);
    if (D)
        D.columns.remove(C);
    var B = _,
		$ = A;
    if ($ == "before") {
        B = this[Pr0](_);
        $ = B.columns.indexOf(_)
    } else if ($ == "after") {
        B = this[Pr0](_);
        $ = B.columns.indexOf(_) + 1
    } else if ($ == "add" || $ == "append") {
        if (!B.columns)
            B.columns = [];
        $ = B.columns.length
    } else if (!mini.isNumber($))
        return;
    B.columns.insert($, C);
    this[EaK](this.columns)
},
hideColumn: function ($) {
    $ = this[Ul]($);
    if (!$)
        return;
    if (this[M_])
        this.commitEdit();
    $.visible = false;
    this.BU8($, false);
    this.NIc();
    this[SA]();
    this.UqVs()
},
showColumn: function ($) {
    $ = this[Ul]($);
    if (!$)
        return;
    if (this[M_])
        this.commitEdit();
    $.visible = true;
    this.BU8($, true);
    this.NIc();
    this[SA]();
    this.UqVs()
},
$ano: function () {
    var _ = this[ORH](),
		D = [];
    for (var C = 0, F = _; C <= F; C++)
        D.push([]);
    function A(C) {
        var D = mini[Q$](C.columns, "columns"),
			A = 0;
        for (var $ = 0, B = D.length; $ < B; $++) {
            var _ = D[$];
            if (_.visible != true || _._hide == true)
                continue;
            if (!_.columns || _.columns.length == 0)
                A += 1
        }
        return A
    }
    var $ = mini[Q$](this.columns, "columns");
    for (C = 0, F = $.length; C < F; C++) {
        var E = $[C],
			B = D[E.level];
        if (E.columns && E.columns.length > 0)
            E.colspan = A(E);
        if ((!E.columns || E.columns.length == 0) && E.level < _)
            E.rowspan = _ - E.level + 1;
        B.push(E)
    }
    return D
},
getMaxColumnLevel: function () {
    return this.maxColumnLevel
}
};
mini.copyTo(MIZ.prototype, mini_Column_Prototype);
mini._GridSort = function ($) {
    this.grid = $;
    Boy($.OW, "mousemove", this.__OnGridHeaderMouseMove, this);
    Boy($.OW, "mouseout", this.__OnGridHeaderMouseOut, this)
};
mini._GridSort[M9NB] = {
    __OnGridHeaderMouseOut: function ($) {
        if (this.D_ColumnEl)
            ZVS(this.D_ColumnEl, "mini-grid-headerCell-hover")
    },
    __OnGridHeaderMouseMove: function (_) {
        var $ = $Rz(_.target, "mini-grid-headerCell");
        if ($) {
            E$_($, "mini-grid-headerCell-hover");
            this.D_ColumnEl = $
        }
    },
    __onGridHeaderCellClick: function (B) {
        var $ = this.grid,
		A = $Rz(B.target, "mini-grid-headerCell");
        if (A) {
            var _ = $[Ul](A.id.split("$")[2]);
            if ($[Rk] && _ && _.allowDrag) {
                this.dragColumn = _;
                this._columnEl = A;
                this.getDrag().start(B)
            }
        }
    }
};
mini._ColumnSplitter = function ($) {
    this.grid = $;
    Boy(this.grid.el, "mousedown", this.BU, this);
    $.on("layout", this.K2, this)
};
mini._ColumnSplitter[M9NB] = {
    K2: function (A) {
        if (this.splittersEl)
            mini[Gwl](this.splittersEl);
        if (this.splitterTimer)
            return;
        var $ = this.grid;
        if ($[RPC]() == false)
            return;
        var _ = this;
        this.splitterTimer = setTimeout(function () {
            var H = $[DM](),
				I = H.length,
				E = L05($.OW, true),
				B = $.getScrollLeft(),
				G = [];
            for (var J = 0, F = H.length; J < F; J++) {
                var D = H[J],
					C = $[ZY](D);
                if (!C)
                    break;
                var A = C.top - E.top,
					M = C.right - E.left - 2,
					K = C.height;
                if ($[CAEr] && $[CAEr]()) {
                    if (J >= $[WAq]);
                } else
                    M += B;
                var N = $[Pr0](D);
                if (N && N.columns)
                    if (N.columns[N.columns.length - 1] == D)
                        if (K + 5 < E.height) {
                            A = 0;
                            K = E.height
                        }
        if ($[AB] && D[MZ])
            G[G.length] = "<div id=\"" + D._id + "\" class=\"mini-grid-splitter\" style=\"left:" + (M - 1) + "px;top:" + A + "px;height:" + K + "px;\"></div>"
    }
    var O = G.join("");
    _.splittersEl = document.createElement("div");
    _.splittersEl.className = "mini-grid-splitters";
    _.splittersEl.innerHTML = O;
    var L = $._getHeaderScrollEl();
    L.appendChild(_.splittersEl);
    _.splitterTimer = null
}, 100)
},
BU: function (B) {
    var $ = this.grid,
		A = B.target;
    if (Mjm(A, "mini-grid-splitter")) {
        var _ = $.Ty0[A.id];
        if ($[AB] && _ && _[MZ]) {
            this.splitterColumn = _;
            this.getDrag().start(B)
        }
    }
},
getDrag: function () {
    if (!this.drag)
        this.drag = new mini.Drag({
            capture: true,
            onStart: mini.createDelegate(this.IA, this),
            onMove: mini.createDelegate(this.XIeJ, this),
            onStop: mini.createDelegate(this.$vRk, this)
        });
    return this.drag
},
IA: function (_) {
    var $ = this.grid,
		B = $[ZY](this.splitterColumn);
    this.columnBox = B;
    this.R8 = mini.append(document.body, "<div class=\"mini-grid-proxy\"></div>");
    var A = $.getBox(true);
    A.x = B.x;
    A.width = B.width;
    A.right = B.right;
    X7y(this.R8, A)
},
XIeJ: function (A) {
    var $ = this.grid,
		B = mini.copyTo({}, this.columnBox),
		_ = B.width + (A.now[0] - A.init[0]);
    if (_ < $.columnMinWidth)
        _ = $.columnMinWidth;
    if (_ > $.columnMaxWidth)
        _ = $.columnMaxWidth;
    X9c(this.R8, _)
},
$vRk: function (E) {
    var $ = this.grid,
		F = L05(this.R8),
		D = this,
		C = $[YYKG];
    $[YYKG] = false;
    setTimeout(function () {
        jQuery(D.R8).remove();
        D.R8 = null;
        $[YYKG] = C
    }, 10);
    var G = this.splitterColumn,
		_ = parseInt(G.width);
    if (_ + "%" != G.width) {
        var A = $[JH9](G),
			B = parseInt(_ / A * F.width);
        $[YM7](G, B)
    }
}
};
mini._ColumnMove = function ($) {
    this.grid = $;
    Boy(this.grid.el, "mousedown", this.BU, this)
};
mini._ColumnMove[M9NB] = {
    BU: function (B) {
        var $ = this.grid;
        if ($[VmPU] && $[VmPU]())
            return;
        if (Mjm(B.target, "mini-grid-splitter"))
            return;
        if (B.button == mini.MouseButton.Right)
            return;
        var A = $Rz(B.target, $._headerCellCls);
        if (A) {
            var _ = $.N6h(B);
            if ($[Rk] && _ && _.allowMove) {
                this.dragColumn = _;
                this._columnEl = A;
                this.getDrag().start(B)
            }
        }
    },
    getDrag: function () {
        if (!this.drag)
            this.drag = new mini.Drag({
                capture: isIE9 ? false : true,
                onStart: mini.createDelegate(this.IA, this),
                onMove: mini.createDelegate(this.XIeJ, this),
                onStop: mini.createDelegate(this.$vRk, this)
            });
        return this.drag
    },
    IA: function (_) {
        function A(_) {
            var A = _.header;
            if (typeof A == "function")
                A = A[R05g]($, _);
            if (mini.isNull(A) || A === "")
                A = "&nbsp;";
            return A
        }
        var $ = this.grid;
        this.R8 = mini.append(document.body, "<div class=\"mini-grid-columnproxy\"></div>");
        this.R8.innerHTML = "<div class=\"mini-grid-columnproxy-inner\" style=\"height:26px;\">" + A(this.dragColumn) + "</div>";
        mini[_20](this.R8, _.now[0] + 15, _.now[1] + 18);
        E$_(this.R8, "mini-grid-no");
        this.moveTop = mini.append(document.body, "<div class=\"mini-grid-movetop\"></div>");
        this.moveBottom = mini.append(document.body, "<div class=\"mini-grid-movebottom\"></div>")
    },
    XIeJ: function (A) {
        var $ = this.grid,
		G = A.now[0];
        mini[_20](this.R8, G + 15, A.now[1] + 18);
        this.targetColumn = this.insertAction = null;
        var D = $Rz(A.event.target, $._headerCellCls);
        if (D) {
            var C = $.N6h(A.event);
            if (C && C != this.dragColumn) {
                var _ = $[Pr0](this.dragColumn),
				E = $[Pr0](C);
                if (_ == E) {
                    this.targetColumn = C;
                    this.insertAction = "before";
                    var F = $[ZY](this.targetColumn);
                    if (G > F.x + F.width / 2)
                        this.insertAction = "after"
                }
            }
        }
        if (this.targetColumn) {
            E$_(this.R8, "mini-grid-ok");
            ZVS(this.R8, "mini-grid-no");
            var B = $[ZY](this.targetColumn);
            this.moveTop.style.display = "block";
            this.moveBottom.style.display = "block";
            if (this.insertAction == "before") {
                mini[_20](this.moveTop, B.x - 4, B.y - 9);
                mini[_20](this.moveBottom, B.x - 4, B.bottom)
            } else {
                mini[_20](this.moveTop, B.right - 4, B.y - 9);
                mini[_20](this.moveBottom, B.right - 4, B.bottom)
            }
        } else {
            ZVS(this.R8, "mini-grid-ok");
            E$_(this.R8, "mini-grid-no");
            this.moveTop.style.display = "none";
            this.moveBottom.style.display = "none"
        }
    },
    $vRk: function (_) {
        var $ = this.grid;
        mini[Gwl](this.R8);
        mini[Gwl](this.moveTop);
        mini[Gwl](this.moveBottom);
        $[YO8](this.dragColumn, this.targetColumn, this.insertAction);
        this.R8 = this.moveTop = this.moveBottom = this.dragColumn = this.targetColumn = null
    }
};
Sf1J = function ($) {
    this.grid = $;
    this.grid.on("cellmousedown", this.Tg, this);
    this.grid.on("cellclick", this.Gqiv, this);
    this.grid.on("celldblclick", this.Gqiv, this);
    Boy(this.grid.el, "keydown", this.RbG, this)
};
Sf1J[M9NB] = {
    RbG: function (G) {
        var $ = this.grid;
        if (Uqe($.Dzf, G.target) || Uqe($.RpF$, G.target) || Uqe($.Tqf, G.target))
            return;
        var A = $.getCurrentCell();
        if (G.shiftKey || G.ctrlKey)
            return;
        if (G.keyCode == 37 || G.keyCode == 38 || G.keyCode == 39 || G.keyCode == 40)
            G.preventDefault();
        var C = $[FmHy](),
		B = A ? A[1] : null,
		_ = A ? A[0] : null;
        if (!A)
            _ = $.getCurrent();
        var F = C.indexOf(B),
		D = $.indexOf(_),
		E = $.getData().length;
        switch (G.keyCode) {
            case 27:
                break;
            case 13:
                if ($[M_] && A)
                    $[Z2]();
                break;
            case 37:
                if (B) {
                    if (F > 0)
                        F -= 1
                } else
                    F = 0;
                break;
            case 38:
                if (_) {
                    if (D > 0)
                        D -= 1
                } else
                    D = 0;
                if (D != 0 && $.isVirtualScroll())
                    if ($._viewRegion.start > D) {
                        $.Jo4.scrollTop -= $._rowHeight;
                        $._tryUpdateScroll()
                    }
            break;
        case 39:
            if (B) {
                if (F < C.length - 1)
                    F += 1
            } else
                F = 0;
            break;
        case 40:
            if (_) {
                if (D < E - 1)
                    D += 1
            } else
                D = 0;
            if ($.isVirtualScroll())
                if ($._viewRegion.end < D) {
                    $.Jo4.scrollTop += $._rowHeight;
                    $._tryUpdateScroll()
                }
        break;
    default:
        break
}
B = C[F];
_ = $.getAt(D);
if (B && _ && $[L4]) {
    A = [_, B];
    $[BdKb](A)
}
if (_ && $[F9]) {
    $[BJTJ]();
    $[EI](_)
}
},
Gqiv: function (A) {
    if (this.grid.cellEditAction != A.type)
        return;
    var $ = A.record,
		_ = A.column;
    if (!_[MLU] && !this.grid[DcOq]())
        if (A.htmlEvent.shiftKey || A.htmlEvent.ctrlKey);
        else
            this.grid[Z2]()
},
Tg: function (C) {
    var _ = C.record,
		B = C.column,
		$ = this.grid;
    if (this.grid[L4]) {
        var A = [_, B];
        this.grid[BdKb](A)
    }
    if ($[F9])
        if ($[ARtO]) {
            this.grid.el.onselectstart = function () { };
            if (C.htmlEvent.shiftKey) {
                this.grid.el.onselectstart = function () {
                    return false
                };
                C.htmlEvent.preventDefault();
                if (!this.currentRecord) {
                    this.grid[Zk](_);
                    this.currentRecord = this.grid[FSi]()
                } else {
                    this.grid[BJTJ]();
                    this.grid.selectRange(this.currentRecord, _)
                }
            } else {
                this.grid.el.onselectstart = function () { };
                if (C.htmlEvent.ctrlKey) {
                    this.grid.el.onselectstart = function () {
                        return false
                    };
                    C.htmlEvent.preventDefault()
                }
                if (C.column._multiRowSelect === true || C.htmlEvent.ctrlKey) {
                    if ($[CTG$](_))
                        $[TgC](_);
                    else
                        $[Zk](_)
                } else if ($[CTG$](_));
                else {
                    $[BJTJ]();
                    $[Zk](_)
                }
                this.currentRecord = this.grid[FSi]()
            }
        } else if (!$[CTG$](_)) {
            $[BJTJ]();
            $[Zk](_)
        } else if (C.htmlEvent.ctrlKey)
            $[BJTJ]()
}
};
mini._CellToolTip = function ($) {
    this.grid = $;
    Boy(this.grid.el, "mousemove", this.__onGridMouseMove, this)
};
mini._CellToolTip[M9NB] = {
    __onGridMouseMove: function (D) {
        var $ = this.grid,
		A = $.J0(D),
		_ = $.Bv(A.record, A.column),
		B = $.getCellError(A.record, A.column);
        if (_) {
            if (B) {
                _.title = B.errorText;
                return
            }
            if (_.firstChild)
                if (Mjm(_.firstChild, "mini-grid-cell-inner") || Mjm(_.firstChild, "mini-treegrid-treecolumn-inner"))
                    _ = _.firstChild;
        if (_.scrollWidth > _.clientWidth) {
            var C = _.innerText || _.textContent || "";
            _.title = C.trim()
        } else
            _.title = ""
    }
}
};
mini_CellValidator_Prototype = {
    getCellErrors: function () {
        return this._cellErrors
    },
    getCellError: function ($, _) {
        $ = this[Ook2] ? this[Ook2]($) : this[VK]($);
        _ = this[Ul](_);
        if (!$ || !_)
            return;
        var A = $[this._rowIdField] + "$" + _._id;
        return this._cellMapErrors[A]
    },
    isValid: function () {
        return this._cellErrors.length == 0
    },
    validate: function () {
        var A = this.data;
        for (var $ = 0, B = A.length; $ < B; $++) {
            var _ = A[$];
            this.validateRow(_)
        }
    },
    validateRow: function (_) {
        var B = this[DM]();
        for (var $ = 0, C = B.length; $ < C; $++) {
            var A = B[$];
            this.validateCell(_, A)
        }
    },
    validateCell: function (C, E) {
        C = this[Ook2] ? this[Ook2](C) : this[VK](C);
        E = this[Ul](E);
        if (!C || !E)
            return;
        var I = {
            record: C,
            row: C,
            node: C,
            column: E,
            field: E.field,
            value: C[E.field],
            isValid: true,
            errorText: ""
        };
        if (E.vtype)
            mini._ValidateVType(E.vtype, I.value, I, E);
        if (I.isValid == true && E.unique && E.field) {
            var A = {},
			D = this.data,
			F = E.field;
            for (var _ = 0, G = D.length; _ < G; _++) {
                var $ = D[_],
				H = $[F];
                if (mini.isNull(H) || H === "");
                else {
                    var B = A[H];
                    if (B && $ == C) {
                        I.isValid = false;
                        I.errorText = mini._getErrorText(E, "uniqueErrorText");
                        this.setCellIsValid(B, E, I.isValid, I.errorText);
                        break
                    }
                    A[H] = $
                }
            }
        }
        this.fire("cellvalidation", I);
        this.setCellIsValid(C, E, I.isValid, I.errorText)
    },
    setIsValid: function (_) {
        if (_) {
            var A = this._cellErrors.clone();
            for (var $ = 0, B = A.length; $ < B; $++) {
                var C = A[$];
                this.setCellIsValid(C.record, C.column, true)
            }
        }
    },
    setCellIsValid: function (_, A, B, D) {
        _ = this[Ook2] ? this[Ook2](_) : this[VK](_);
        A = this[Ul](A);
        if (!_ || !A)
            return;
        var E = _[this._rowIdField] + "$" + A._id,
		$ = this.Bv(_, A),
		C = this._cellMapErrors[E];
        delete this._cellMapErrors[E];
        this._cellErrors.remove(C);
        if (B === true) {
            if ($ && C)
                ZVS($, "mini-grid-cell-error")
        } else {
            C = {
                record: _,
                column: A,
                isValid: B,
                errorText: D
            };
            this._cellMapErrors[E] = C;
            this._cellErrors.add(C);
            if ($)
                E$_($, "mini-grid-cell-error")
        }
    }
};
mini.copyTo(MIZ.prototype, mini_CellValidator_Prototype);
mini.GridEditor = function () {
    this._inited = true;
    Jva[Ov][FaWb][R05g](this);
    this[P1V]();
    this.el.uid = this.uid;
    this[Ri$]();
    this.P01();
    this[UAC](this.uiCls)
};
ZPOi(mini.GridEditor, Jva, {
    el: null,
    _create: function () {
        this.el = document.createElement("input");
        this.el.type = "text";
        this.el.style.width = "100%"
    },
    getValue: function () {
        return this.el.value
    },
    setValue: function ($) {
        this.el.value = $
    },
    setWidth: function ($) { }

});
K6v = function () {
    K6v[Ov][FaWb][R05g](this)
};
ZPOi(K6v, Jva, {
    pageIndex: 0,
    pageSize: 10,
    totalCount: 0,
    totalPage: 0,
    showPageIndex: true,
    showPageSize: true,
    showTotalCount: true,
    showPageInfo: true,
    _clearBorder: false,
    showButtonText: false,
    showButtonIcon: true,
    firstText: "\u9996\u9875",
    prevText: "\u4e0a\u4e00\u9875",
    nextText: "\u4e0b\u4e00\u9875",
    lastText: "\u5c3e\u9875",
    pageInfoText: "\u6bcf\u9875 {0} \u6761,\u5171 {1} \u6761",
    sizeList: [10, 20, 50, 100],
    uiCls: "mini-pager",
    _create: function () {
        this.el = document.createElement("div");
        this.el.className = "mini-pager";
        var $ = "<div class=\"mini-pager-left\"></div><div class=\"mini-pager-right\"></div>";
        this.el.innerHTML = $;
        this.buttonsEl = this._leftEl = this.el.childNodes[0];
        this._rightEl = this.el.childNodes[1];
        this.sizeEl = mini.append(this.buttonsEl, "<span class=\"mini-pager-size\"></span>");
        this.sizeCombo = new ImY();
        this.sizeCombo.setName("pagesize");
        this.sizeCombo[RG$](45);
        this.sizeCombo[Tlr9](this.sizeEl);
        mini.append(this.sizeEl, "<span class=\"separator\"></span>");
        this.firstButton = new RsJi();
        this.firstButton[Tlr9](this.buttonsEl);
        this.prevButton = new RsJi();
        this.prevButton[Tlr9](this.buttonsEl);
        this.indexEl = document.createElement("span");
        this.indexEl.className = "mini-pager-index";
        this.indexEl.innerHTML = "<input id=\"\" type=\"text\" class=\"mini-pager-num\"/><span class=\"mini-pager-pages\">/ 0</span>";
        this.buttonsEl.appendChild(this.indexEl);
        this.numInput = this.indexEl.firstChild;
        this.pagesLabel = this.indexEl.lastChild;
        this.nextButton = new RsJi();
        this.nextButton[Tlr9](this.buttonsEl);
        this.lastButton = new RsJi();
        this.lastButton[Tlr9](this.buttonsEl);
        this.firstButton.setPlain(true);
        this.prevButton.setPlain(true);
        this.nextButton.setPlain(true);
        this.lastButton.setPlain(true);
        this.update()
    },
    destroy: function ($) {
        if (this.pageSelect) {
            mini[Y5P](this.pageSelect);
            this.pageSelect = null
        }
        if (this.numInput) {
            mini[Y5P](this.numInput);
            this.numInput = null
        }
        this.sizeEl = null;
        this.buttonsEl = null;
        K6v[Ov][Yr3P][R05g](this, $)
    },
    _initEvents: function () {
        K6v[Ov][Ri$][R05g](this);
        this.firstButton.on("click", function ($) {
            this.Gqw(0)
        }, this);
        this.prevButton.on("click", function ($) {
            this.Gqw(this[IKs_] - 1)
        }, this);
        this.nextButton.on("click", function ($) {
            this.Gqw(this[IKs_] + 1)
        }, this);
        this.lastButton.on("click", function ($) {
            this.Gqw(this.totalPage)
        }, this);
        function $() {
            var $ = parseInt(this.numInput.value);
            if (isNaN($))
                this.update();
            else
                this.Gqw($ - 1)
        }
        Boy(this.numInput, "change", function (_) {
            $[R05g](this)
        }, this);
        Boy(this.numInput, "keydown", function (_) {
            if (_.keyCode == 13) {
                $[R05g](this);
                _.stopPropagation()
            }
        }, this);
        this.sizeCombo.on("valuechanged", this.LJ, this)
    },
    doLayout: function () {
        if (!this.canLayout())
            return;
        mini.layout(this._leftEl);
        mini.layout(this._rightEl)
    },
    setPageIndex: function ($) {
        if (isNaN($))
            return;
        this[IKs_] = $;
        this.update()
    },
    getPageIndex: function () {
        return this[IKs_]
    },
    setPageSize: function ($) {
        if (isNaN($))
            return;
        this[Ti2] = $;
        this.update()
    },
    getPageSize: function () {
        return this[Ti2]
    },
    setTotalCount: function ($) {
        $ = parseInt($);
        if (isNaN($))
            return;
        this[HoaN] = $;
        this.update()
    },
    getTotalCount: function () {
        return this[HoaN]
    },
    setSizeList: function ($) {
        if (!mini.isArray($))
            return;
        this[UbK] = $;
        this.update()
    },
    getSizeList: function () {
        return this[UbK]
    },
    setShowPageSize: function ($) {
        this.showPageSize = $;
        this.update()
    },
    getShowPageSize: function () {
        return this.showPageSize
    },
    setShowPageIndex: function ($) {
        this.showPageIndex = $;
        this.update()
    },
    getShowPageIndex: function () {
        return this.showPageIndex
    },
    setShowTotalCount: function ($) {
        this.showTotalCount = $;
        this.update()
    },
    getShowTotalCount: function () {
        return this.showTotalCount
    },
    setShowPageInfo: function ($) {
        this.showPageInfo = $;
        this.update()
    },
    getShowPageInfo: function () {
        return this.showPageInfo
    },
    getTotalPage: function () {
        return this.totalPage
    },
    update: function ($, H, F) {
        if (mini.isNumber($))
            this[IKs_] = parseInt($);
        if (mini.isNumber(H))
            this[Ti2] = parseInt(H);
        if (mini.isNumber(F))
            this[HoaN] = parseInt(F);
        this.totalPage = parseInt(this[HoaN] / this[Ti2]) + 1;
        if ((this.totalPage - 1) * this[Ti2] == this[HoaN])
            this.totalPage -= 1;
        if (this[HoaN] == 0)
            this.totalPage = 0;
        if (this[IKs_] > this.totalPage - 1)
            this[IKs_] = this.totalPage - 1;
        if (this[IKs_] <= 0)
            this[IKs_] = 0;
        if (this.totalPage <= 0)
            this.totalPage = 0;
        this.firstButton.enable();
        this.prevButton.enable();
        this.nextButton.enable();
        this.lastButton.enable();
        if (this[IKs_] == 0) {
            this.firstButton.disable();
            this.prevButton.disable()
        }
        if (this[IKs_] >= this.totalPage - 1) {
            this.nextButton.disable();
            this.lastButton.disable()
        }
        this.numInput.value = this[IKs_] > -1 ? this[IKs_] + 1 : 0;
        this.pagesLabel.innerHTML = "/ " + this.totalPage;
        var K = this[UbK].clone();
        if (K.indexOf(this[Ti2]) == -1) {
            K.push(this[Ti2]);
            K = K.sort(function ($, _) {
                return $ > _
            })
        }
        var _ = [];
        for (var E = 0, B = K.length; E < B; E++) {
            var D = K[E],
			G = {};
            G.text = D;
            G.id = D;
            _.push(G)
        }
        this.sizeCombo[JmQP](_);
        this.sizeCombo[XlA](this[Ti2]);
        var A = this.firstText,
		J = this.prevText,
		C = this.nextText,
		I = this.lastText;
        if (this.showButtonText == false)
            A = J = C = I = "";
        this.firstButton[T0B](A);
        this.prevButton[T0B](J);
        this.nextButton[T0B](C);
        this.lastButton[T0B](I);
        A = this.firstText,
		J = this.prevText,
		C = this.nextText,
		I = this.lastText;
        if (this.showButtonText == true)
            A = J = C = I = "";
        this.firstButton.setTooltip(A);
        this.prevButton.setTooltip(J);
        this.nextButton.setTooltip(C);
        this.lastButton.setTooltip(I);
        this.firstButton.setIconCls(this.showButtonIcon ? "mini-pager-first" : "");
        this.prevButton.setIconCls(this.showButtonIcon ? "mini-pager-prev" : "");
        this.nextButton.setIconCls(this.showButtonIcon ? "mini-pager-next" : "");
        this.lastButton.setIconCls(this.showButtonIcon ? "mini-pager-last" : "");
        this._rightEl.innerHTML = String.format(this.pageInfoText, this.pageSize, this[HoaN]);
        this.indexEl.style.display = this.showPageIndex ? "" : "none";
        this.sizeEl.style.display = this.showPageSize ? "" : "none";
        this._rightEl.style.display = this.showPageInfo ? "" : "none"
    },
    LJ: function (_) {
        var $ = parseInt(this.sizeCombo.getValue());
        this.Gqw(0, $)
    },
    Gqw: function ($, _) {
        var A = {
            pageIndex: mini.isNumber($) ? $ : this.pageIndex,
            pageSize: mini.isNumber(_) ? _ : this.pageSize,
            cancel: false
        };
        if (A[IKs_] > this.totalPage - 1)
            A[IKs_] = this.totalPage - 1;
        if (A[IKs_] < 0)
            A[IKs_] = 0;
        this.fire("pagechanged", A);
        if (A.cancel == false)
            this.update(A.pageIndex, A[Ti2])
    },
    onPageChanged: function (_, $) {
        this.on("pagechanged", _, $)
    },
    getAttrs: function (el) {
        var attrs = K6v[Ov][RH][R05g](this, el);
        mini[A5ac](el, attrs, ["onpagechanged", "sizeList"]);
        mini[QRH](el, attrs, ["showPageIndex", "showPageSize", "showTotalCount", "showPageInfo"]);
        mini[ClW](el, attrs, ["pageIndex", "pageSize", "totalCount"]);
        if (typeof attrs[UbK] == "string")
            attrs[UbK] = eval(attrs[UbK]);
        return attrs
    }
});
H58(K6v, "pager");
GwSX = function () {
    this.columns = [];
    this.Ac = [];
    this.Ty0 = {};
    this.RoS = {};
    this._cellErrors = [];
    this._cellMapErrors = {};
    GwSX[Ov][FaWb][R05g](this);
    this.WqN.style.display = this[MZ] ? "" : "none"
};
ZPOi(GwSX, Yps7, {
    _rowIdField: "_id",
    width: 300,
    height: 180,
    allowResize: false,
    treeColumn: "",
    columns: [],
    columnWidth: 80,
    allowResizeColumn: true,
    allowMoveColumn: true,
    JT2: true,
    _headerCellCls: "mini-treegrid-headerCell",
    _cellCls: "mini-treegrid-cell",
    Q5O: "mini-treegrid-border",
    Dp: "mini-treegrid-header",
    SR4M: "mini-treegrid-body",
    Hq_: "mini-treegrid-node",
    RWsQ: "mini-treegrid-nodes",
    TT: "mini-treegrid-selectedNode",
    CHu: "mini-treegrid-hoverNode",
    Lzj: "mini-treegrid-expand",
    _s_: "mini-treegrid-collapse",
    Fipf: "mini-treegrid-ec-icon",
    NDJK: "mini-treegrid-nodeTitle",
    Jve: function (_) {
        if (!_)
            return null;
        var $ = this.DEYR(_);
        return $
    },
    uiCls: "mini-treegrid",
    _create: function () {
        GwSX[Ov][P1V][R05g](this);
        this.WqN = mini.append(this.KDCb, "<div class=\"mini-grid-resizeGrid\" style=\"\"></div>");
        Boy(this.Jo4, "scroll", this.DDob, this);
        this.JSdV = new Ca(this);
        this._ColumnMove = new mini._ColumnMove(this);
        this.L_m = new mini._ColumnSplitter(this);
        this._CellTip = new mini._CellToolTip(this)
    },
    JnA: function ($) {
        return this.uid + "$column$" + $.id
    },
    _getHeaderScrollEl: function () {
        return this.OW.firstChild
    },
    PdtG: function (D) {
        var F = "",
		B = this[DM]();
        if (isIE) {
            if (isIE6 || isIE7 || (isIE8 && !jQuery.boxModel) || (isIE9 && !jQuery.boxModel))
                F += "<tr style=\"display:none;\">";
            else
                F += "<tr >"
        } else
            F += "<tr>";
        for (var $ = 0, C = B.length; $ < C; $++) {
            var A = B[$],
			_ = A.width,
			E = this.JnA(A) + "$" + D;
            F += "<td id=\"" + E + "\" style=\"padding:0;border:0;margin:0;height:0;";
            if (A.width)
                F += "width:" + A.width;
            F += "\" ></td>"
        }
        F += "</tr>";
        return F
    },
    NIc: function () {
        var E = this[DM](),
		F = [];
        F[F.length] = "<div class=\"mini-treegrid-headerInner\"><table class=\"mini-treegrid-table\" cellspacing=\"0\" cellpadding=\"0\">";
        F[F.length] = this.PdtG();
        F[F.length] = "<tr>";
        for (var D = 0, _ = E.length; D < _; D++) {
            var B = E[D],
			C = B.header;
            if (typeof C == "function")
                C = C[R05g](this, B);
            if (mini.isNull(C) || C === "")
                C = "&nbsp;";
            var A = B.width;
            if (mini.isNumber(A))
                A = A + "px";
            var $ = this.JnA(B);
            F[F.length] = "<td id=\"";
            F[F.length] = $;
            F[F.length] = "\" class=\"mini-treegrid-headerCell ";
            if (B.headerCls)
                F[F.length] = B.headerCls;
            F[F.length] = "\" style=\"";
            if (B.headerStyle)
                F[F.length] = B.headerStyle + ";";
            if (A)
                F[F.length] = "width:" + A + ";";
            if (B.headerAlign)
                F[F.length] = "text-align:" + B.headerAlign + ";";
            F[F.length] = "\">";
            F[F.length] = C;
            F[F.length] = "</td>"
        }
        F[F.length] = "</tr></table></div>";
        this.OW.innerHTML = F.join("")
    },
    Ea$: function (B, M, G) {
        var K = !G;
        if (!G)
            G = [];
        var H = B[this.textField];
        if (H === null || H === undefined)
            H = "";
        var I = this.isLeaf(B),
		$ = this.getLevel(B),
		D = "";
        if (!I)
            D = this.isExpandedNode(B) ? this.Lzj : this._s_;
        if (this.HWi1 == B)
            D += " " + this.TT;
        var E = this[DM]();
        G[G.length] = "<table class=\"mini-treegrid-nodeTitle ";
        G[G.length] = D;
        G[G.length] = "\" cellspacing=\"0\" cellpadding=\"0\">";
        G[G.length] = this.PdtG();
        G[G.length] = "<tr>";
        for (var J = 0, _ = E.length; J < _; J++) {
            var C = E[J],
			F = this._K(B, C),
			L = this.QY8(B, C),
			A = C.width;
            if (typeof A == "number")
                A = A + "px";
            G[G.length] = "<td id=\"";
            G[G.length] = F;
            G[G.length] = "\" class=\"mini-treegrid-cell ";
            if (L.cellCls)
                G[G.length] = L.cellCls;
            G[G.length] = "\" style=\"";
            if (L.cellStyle) {
                G[G.length] = L.cellStyle;
                G[G.length] = ";"
            }
            if (C.align) {
                G[G.length] = "text-align:";
                G[G.length] = C.align;
                G[G.length] = ";"
            }
            G[G.length] = "\">";
            G[G.length] = L.cellHtml;
            G[G.length] = "</td>";
            if (L.rowCls)
                rowCls = L.rowCls;
            if (L.rowStyle)
                rowStyle = L.rowStyle
        }
        G[G.length] = "</table>";
        if (K)
            return G.join("")
    },
    doUpdate: function () {
        if (!this.QYky)
            return;
        this.NIc();
        var $ = new Date(),
		_ = this._getViewChildNodes(this.root),
		B = [];
        this.Zmkf(_, this.root, B);
        var A = B.join("");
        this.Jo4.innerHTML = A;
        this.$A()
    },
    getScrollLeft: function () {
        return this.Jo4.scrollLeft
    },
    doLayout: function () {
        if (!this.canLayout())
            return;
        var C = this[Rlg](),
		D = this[U_Ap](),
		_ = this[QRh](true),
		A = this[UT](true),
		B = this[Ald](),
		$ = A - B;
        this.Jo4.style.width = _ + "px";
        this.Jo4.style.height = $ + "px";
        this.Fuq();
        this.fire("layout")
    },
    Fuq: function () {
        var B = this.Jo4.scrollHeight,
		E = this.Jo4.clientHeight,
		A = this[QRh](true);
        if (isIE) {
            var _ = this.OW.firstChild.firstChild,
			D = this.Jo4.firstChild;
            if (E >= B) {
                if (D)
                    D.style.width = "100%";
                if (_)
                    _.style.width = "100%"
            } else {
                if (D) {
                    var $ = parseInt(D.parentNode.offsetWidth - 17) + "px";
                    D.style.width = $
                }
                if (_)
                    _.style.width = $
            }
        }
        if (E < B)
            this.OW.firstChild.style.width = (A - 17) + "px";
        else
            this.OW.firstChild.style.width = "100%";
        try {
            $ = this.OW.firstChild.firstChild.offsetWidth;
            this.Jo4.firstChild.style.width = $ + "px"
        } catch (C) { }

        this.DDob()
    },
    getHeaderHeight: function () {
        return Cop(this.OW)
    },
    QY8: function ($, B) {
        var D = this[Zu];
        if (D && this.hasChildren($))
            D = this[F$q];
        var _ = $[B.field],
		C = {
		    isLeaf: this.isLeaf($),
		    rowIndex: this.indexOf($),
		    showCheckBox: D,
		    iconCls: this.getNodeIcon($),
		    showTreeIcon: this.showTreeIcon,
		    sender: this,
		    record: $,
		    row: $,
		    node: $,
		    column: B,
		    field: B ? B.field : null,
		    value: _,
		    cellHtml: _,
		    rowCls: null,
		    cellCls: B ? (B.cellCls || "") : "",
		    rowStyle: null,
		    cellStyle: B ? (B.cellStyle || "") : ""
		};
        if (B.dateFormat)
            if (mini.isDate(C.value))
                C.cellHtml = mini.formatDate(_, B.dateFormat);
            else
                C.cellHtml = _;
    var A = B.renderer;
    if (A) {
        fn = typeof A == "function" ? A : window[A];
        if (fn)
            C.cellHtml = fn[R05g](B, C)
    }
    this.fire("drawcell", C);
    if (C.cellHtml === null || C.cellHtml === undefined || C.cellHtml === "")
        C.cellHtml = "&nbsp;";
    if (!this.treeColumn || this.treeColumn !== B.name)
        return C;
    this.Xa(C);
    return C
},
Xa: function (H) {
    var A = H.node;
    if (mini.isNull(H[HGX]))
        H[HGX] = this[HGX];
    var G = H.cellHtml,
		B = this.isLeaf(A),
		$ = this.getLevel(A) * 18,
		D = "";
    if (H.cellCls)
        H.cellCls += " mini-treegrid-treecolumn ";
    else
        H.cellCls = " mini-treegrid-treecolumn ";
    var F = "<div class=\"mini-treegrid-treecolumn-inner " + D + "\">";
    if (!B)
        F += "<a href=\"#\" onclick=\"return false;\"  hidefocus class=\"" + this.Fipf + "\" style=\"left:" + ($) + "px;\"></a>";
    $ += 18;
    if (H[HGX]) {
        var _ = this.getNodeIcon(A);
        F += "<div class=\"" + _ + " mini-treegrid-nodeicon\" style=\"left:" + $ + "px;\"></div>";
        $ += 18
    }
    G = "<span class=\"mini-tree-nodetext\">" + G + "</span>";
    if (H[Zu]) {
        var E = this.MDBn(A),
			C = this.isCheckedNode(A);
        G = "<input type=\"checkbox\" id=\"" + E + "\" class=\"" + this.T$mk + "\" hidefocus " + (C ? "checked" : "") + "/>" + G
    }
    F += "<div class=\"mini-treegrid-nodeshow\" style=\"margin-left:" + ($ + 2) + "px;\">" + G + "</div>";
    F += "</div>";
    G = F;
    H.cellHtml = G
},
setTreeColumn: function ($) {
    if (this.treeColumn != $) {
        this.treeColumn = $;
        this[YaK]()
    }
},
getTreeColumn: function ($) {
    return this.treeColumn
},
setAllowResizeColumn: function ($) {
    this[AB] = $
},
getAllowResizeColumn: function ($) {
    return this[AB]
},
setAllowMoveColumn: function ($) {
    this[Rk] = $
},
getAllowMoveColumn: function ($) {
    return this[Rk]
},
setAllowResize: function ($) {
    this[MZ] = $;
    this.WqN.style.display = this[MZ] ? "" : "none"
},
getAllowResize: function () {
    return this[MZ]
},
_K: function (_, $) {
    return this.uid + "$" + _._id + "$" + $._id
},
setColumnWidth: function (_, $) {
    _ = this[Ul](_);
    if (!_)
        return;
    if (mini.isNumber($))
        $ += "px";
    _.width = $;
    this[YaK]()
},
getColumnWidth: function (_) {
    var $ = this[ZY](_);
    return $ ? $.width : 0
},
DDob: function (_) {
    var $ = this.Jo4.scrollLeft;
    this.OW.firstChild.scrollLeft = $
},
getAttrs: function (_) {
    var E = GwSX[Ov][RH][R05g](this, _);
    mini[A5ac](_, E, ["treeColumn", "ondrawcell"]);
    mini[QRH](_, E, ["allowResizeColumn", "allowMoveColumn", "allowResize"]);
    var C = mini[SY0](_);
    for (var $ = 0, D = C.length; $ < D; $++) {
        var B = C[$],
			A = jQuery(B).attr("property");
        if (!A)
            continue;
        A = A.toLowerCase();
        if (A == "columns")
            E.columns = mini._ParseColumns(B)
    }
    delete E.data;
    return E
}
});
mini.copyTo(GwSX.prototype, mini_Column_Prototype);
mini.copyTo(GwSX.prototype, mini_CellValidator_Prototype);
H58(GwSX, "treegrid");
mini.RadioButtonList = WsC, mini.ValidatorBase = Yw, mini.AutoComplete = XQF, mini.CheckBoxList = VD, mini.DataBinding = X34, mini.OutlookTree = VVcI, mini.OutlookMenu = KVD, mini.TextBoxList = NkRm, mini.TimeSpinner = Lsb, mini.ListControl = $oc, mini.OutlookBar = MD, mini.FileUpload = JvM, mini.TreeSelect = Hf, mini.DatePicker = Pfk, mini.ButtonEdit = B6, mini.PopupEdit = KWC, mini.Component = ZaZ, mini.TreeGrid = GwSX, mini.DataGrid = MIZ, mini.MenuItem = Qkw, mini.Splitter = Bra, mini.HtmlFile = Pw, mini.Calendar = AeI, mini.ComboBox = ImY, mini.TextArea = $a, mini.Password = _obf, mini.CheckBox = ME8N, mini.DataSet = $HI, mini.Include = NIaw, mini.Spinner = Lsdv, mini.ListBox = CACT, mini.TextBox = Q2q, mini.Control = Jva, mini.Layout = Ll, mini.Window = Hjg, mini.Lookup = Rs, mini.Button = RsJi, mini.Hidden = VgA, mini.Pager = K6v, mini.Panel = NUs, mini.Popup = QHb, mini.Tree = Yps7, mini.Menu = Y6XM, mini.Tabs = AZW, mini.Fit = Ma, mini.Box = Qv1;
mini.locale = "en-US";
mini.dateInfo = {
    monthsLong: ["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"],
    monthsShort: ["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"],
    daysLong: ["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"],
    daysShort: ["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"],
    quarterLong: ["\u4e00\u5b63\u5ea6", "\u4e8c\u5b63\u5ea6", "\u4e09\u5b63\u5ea6", "\u56db\u5b63\u5ea6"],
    quarterShort: ["Q1", "Q2", "Q2", "Q4"],
    halfYearLong: ["\u4e0a\u534a\u5e74", "\u4e0b\u534a\u5e74"],
    patterns: {
        "d": "yyyy-M-d",
        "D": "yyyy\u5e74M\u6708d\u65e5",
        "f": "yyyy\u5e74M\u6708d\u65e5 H:mm",
        "F": "yyyy\u5e74M\u6708d\u65e5 H:mm:ss",
        "g": "yyyy-M-d H:mm",
        "G": "yyyy-M-d H:mm:ss",
        "m": "MMMd\u65e5",
        "o": "yyyy-MM-ddTHH:mm:ss.fff",
        "s": "yyyy-MM-ddTHH:mm:ss",
        "t": "H:mm",
        "T": "H:mm:ss",
        "U": "yyyy\u5e74M\u6708d\u65e5 HH:mm:ss",
        "y": "yyyy\u5e74MM\u6708"
    },
    tt: {
        "AM": "\u4e0a\u5348",
        "PM": "\u4e0b\u5348"
    },
    ten: {
        "Early": "\u4e0a\u65ec",
        "Mid": "\u4e2d\u65ec",
        "Late": "\u4e0b\u65ec"
    },
    today: "\u4eca\u5929",
    clockType: 24
};
if (AeI)
    mini.copyTo(AeI.prototype, {
        firstDayOfWeek: 0,
        todayText: "\u4eca\u5929",
        clearText: "\u6e05\u9664",
        okText: "\u786e\u5b9a",
        cancelText: "\u53d6\u6d88",
        daysShort: ["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"],
        format: "yyyy\u5e74MM\u6708",
        timeFormat: "H:mm"
    });
for (var id in mini) {
    var clazz = mini[id];
    if (clazz && clazz[M9NB] && clazz[M9NB].isControl)
        clazz[M9NB][B2V] = "\u4e0d\u80fd\u4e3a\u7a7a"
}
if (mini.VTypes)
    mini.copyTo(mini.VTypes, {
        uniqueErrorText: "\u5b57\u6bb5\u4e0d\u80fd\u91cd\u590d",
        requiredErrorText: "\u4e0d\u80fd\u4e3a\u7a7a",
        emailErrorText: "\u8bf7\u8f93\u5165\u90ae\u4ef6\u683c\u5f0f",
        urlErrorText: "\u8bf7\u8f93\u5165URL\u683c\u5f0f",
        floatErrorText: "\u8bf7\u8f93\u5165\u6570\u5b57",
        intErrorText: "\u8bf7\u8f93\u5165\u6574\u6570",
        dateErrorText: "\u8bf7\u8f93\u5165\u65e5\u671f\u683c\u5f0f {0}",
        maxLengthErrorText: "\u4e0d\u80fd\u8d85\u8fc7 {0} \u4e2a\u5b57\u7b26",
        minLengthErrorText: "\u4e0d\u80fd\u5c11\u4e8e {0} \u4e2a\u5b57\u7b26",
        maxErrorText: "\u6570\u5b57\u4e0d\u80fd\u5927\u4e8e {0} ",
        minErrorText: "\u6570\u5b57\u4e0d\u80fd\u5c0f\u4e8e {0} ",
        rangeLengthErrorText: "\u5b57\u7b26\u957f\u5ea6\u5fc5\u987b\u5728 {0} \u5230 {1} \u4e4b\u95f4",
        rangeCharErrorText: "\u5b57\u7b26\u6570\u5fc5\u987b\u5728 {0} \u5230 {1} \u4e4b\u95f4",
        rangeErrorText: "\u6570\u5b57\u5fc5\u987b\u5728 {0} \u5230 {1} \u4e4b\u95f4"
    });
if (K6v)
    mini.copyTo(K6v.prototype, {
        firstText: "\u9996\u9875",
        prevText: "\u4e0a\u4e00\u9875",
        nextText: "\u4e0b\u4e00\u9875",
        lastText: "\u5c3e\u9875",
        pageInfoText: "\u6bcf\u9875 {0} \u6761,\u5171 {1} \u6761"
    });
if (MIZ)
    mini.copyTo(MIZ.prototype, {
        emptyText: "\u6ca1\u6709\u8fd4\u56de\u7684\u6570\u636e"
    });
if (JvM)
    JvM[M9NB].buttonText = "\u6d4f\u89c8...";
if (Pw)
    Pw[M9NB].buttonText = "\u6d4f\u89c8...";
if (window.mini.Gantt) {
    mini.GanttView.ShortWeeks = ["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"];
    mini.GanttView.LongWeeks = ["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"];
    mini.Gantt.PredecessorLinkType = [{
        ID: 0,
        Name: "\u5b8c\u6210-\u5b8c\u6210(FF)",
        Short: "FF"
    }, {
        ID: 1,
        Name: "\u5b8c\u6210-\u5f00\u59cb(FS)",
        Short: "FS"
    }, {
        ID: 2,
        Name: "\u5f00\u59cb-\u5b8c\u6210(SF)",
        Short: "SF"
    }, {
        ID: 3,
        Name: "\u5f00\u59cb-\u5f00\u59cb(SS)",
        Short: "SS"
    }
	];
    mini.Gantt.ConstraintType = [{
        ID: 0,
        Name: "\u8d8a\u65e9\u8d8a\u597d"
    }, {
        ID: 1,
        Name: "\u8d8a\u665a\u8d8a\u597d"
    }, {
        ID: 2,
        Name: "\u5fc5\u987b\u5f00\u59cb\u4e8e"
    }, {
        ID: 3,
        Name: "\u5fc5\u987b\u5b8c\u6210\u4e8e"
    }, {
        ID: 4,
        Name: "\u4e0d\u5f97\u65e9\u4e8e...\u5f00\u59cb"
    }, {
        ID: 5,
        Name: "\u4e0d\u5f97\u665a\u4e8e...\u5f00\u59cb"
    }, {
        ID: 6,
        Name: "\u4e0d\u5f97\u65e9\u4e8e...\u5b8c\u6210"
    }, {
        ID: 7,
        Name: "\u4e0d\u5f97\u665a\u4e8e...\u5b8c\u6210"
    }
	];
    mini.copyTo(mini.Gantt, {
        ID_Text: "\u6807\u8bc6\u53f7",
        Name_Text: "\u4efb\u52a1\u540d\u79f0",
        PercentComplete_Text: "\u8fdb\u5ea6",
        Duration_Text: "\u5de5\u671f",
        Start_Text: "\u5f00\u59cb\u65e5\u671f",
        Finish_Text: "\u5b8c\u6210\u65e5\u671f",
        Critical_Text: "\u5173\u952e\u4efb\u52a1",
        PredecessorLink_Text: "\u524d\u7f6e\u4efb\u52a1",
        Work_Text: "\u5de5\u65f6",
        Priority_Text: "\u91cd\u8981\u7ea7\u522b",
        Weight_Text: "\u6743\u91cd",
        OutlineNumber_Text: "\u5927\u7eb2\u5b57\u6bb5",
        OutlineLevel_Text: "\u4efb\u52a1\u5c42\u7ea7",
        ActualStart_Text: "\u5b9e\u9645\u5f00\u59cb\u65e5\u671f",
        ActualFinish_Text: "\u5b9e\u9645\u5b8c\u6210\u65e5\u671f",
        WBS_Text: "WBS",
        ConstraintType_Text: "\u9650\u5236\u7c7b\u578b",
        ConstraintDate_Text: "\u9650\u5236\u65e5\u671f",
        Department_Text: "\u90e8\u95e8",
        Principal_Text: "\u8d1f\u8d23\u4eba",
        Assignments_Text: "\u8d44\u6e90\u540d\u79f0",
        Summary_Text: "\u6458\u8981\u4efb\u52a1",
        Task_Text: "\u4efb\u52a1",
        Baseline_Text: "\u6bd4\u8f83\u57fa\u51c6",
        LinkType_Text: "\u94fe\u63a5\u7c7b\u578b",
        LinkLag_Text: "\u5ef6\u9694\u65f6\u95f4",
        From_Text: "\u4ece",
        To_Text: "\u5230",
        Goto_Text: "\u8f6c\u5230\u4efb\u52a1",
        UpGrade_Text: "\u5347\u7ea7",
        DownGrade_Text: "\u964d\u7ea7",
        Add_Text: "\u65b0\u589e",
        Edit_Text: "\u7f16\u8f91",
        Remove_Text: "\u5220\u9664",
        Move_Text: "\u79fb\u52a8",
        ZoomIn_Text: "\u653e\u5927",
        ZoomOut_Text: "\u7f29\u5c0f",
        Deselect_Text: "\u53d6\u6d88\u9009\u62e9",
        Split_Text: "\u62c6\u5206\u4efb\u52a1"
    })
}
